JAVASe DAY 1

JAVA的学习资料:

  • 《Java语言程序设计》基础篇 进阶篇 当教材使用

  • 《HeadFirstJava》辅助教材使用

  • 《Effective Java》进阶教材 Java课程学习完毕后 学习这本书

  • 专项练习-日常作业

  • 编程题集-代码练习

第一部分 语法基础篇

第1章 概述

1.1 计算机组成部分

计算机主要分为两个部分:硬件,软件

硬件:能看的见的,带电的,摸得着的这电子元器件

  • 键盘:输入设备

  • 鼠标:输入设备

  • 屏幕:输出设备/输入设备

  • 硬盘:存储设备,存储的永久性数据     (硬盘:固态硬盘和机械硬盘)如果想要安全性高,选机械硬盘(磁盘刻录),如果想要读取效率高,选固态硬盘(电子  给塔加压)

  • 内存:存储设备,存储的临时性数据,电脑一关机就没了

  • CPU:中央处理器

  • GPU:图形图形处理器(显示芯片)

软件:就是一些看不见的指令,通过控制电子信号,来管理和操作底层硬件

  • 系统软件:主要用来控制和管理底层硬件的,为用户提供最基本的计算机功能。操作系统其实就是用户与硬件之间的桥梁。比如:Windows、Linux、MAC等)

  • 应用软件:具有特殊领域功能的软件(QQ、微信等)

JAVASe DAY 1_第1张图片

1.2 人机交互方式

常见的人机交互方式:

  • 图形化界面:最常用的一种交互方式,主要是以图形界面的形式提供给用户进行操作。

    • 优点:简单直观易上手操作

    • 缺点:体积大,步骤繁杂,不易管理

  • 命令行界面:主要是以字符为形式的一种交互方式,最早期的形式,在Linux中是最主要的一种操作方式。Windows中的终端 win+R 输入cmd 回车

    • 优点:效率高

    • 缺点:记命令

    什么是命令?所谓的命令其实就是OS平台下的可执行程序->就是已经被编译好的代码->已经写好并编译程序

使用到DOS命令:

  • cd 切换目录

  • dir 展示目录内容

  • cd .. 返回上一级目录

  • cd / 返回到当前盘符的根目录

  • md 创建目录

  • rd删除目录  remove directory

  • del 删除文件

  • dos退出dos命令行

  • help帮助命令

  • D:  进入D盘

打开powershell 支持cmd 也支持linux的命令

ls查看所有目录

主要是因为前期在进行Java代码编译和运行的时候,我们主要是以命令行的形式操作,可以看到一些集成环境中看不到的知识。

1.3 计算机编程语言

机器语言:计算机只能识别二进制,对程序员不友好

汇编语言:出现了一些单词字符来表示一些计算机的操作指令,但是在编制代码的时候,程序员必须考虑计算机底层的实现细节(比如内存管理,CPU运算的逻辑),增加了程序员的入门的门槛。

高级编程语言:主要以人类的思维方式来进行编程的,人能看懂,但是计算机看不懂,需要编译的步骤,将源代码编译成计算机能够识别的机器语言(二进制)。C语言的源代码XXX.c 编译之后 XXX.exe exe是Windows平台上的可执行程序,二进制文件。其中最底层的高级编程语言是c语言。

对于高级编程语言又分为了两大类:

  • 静态编译型(C、C++、Java)

    • 静态:变量有严格的数据类型之分(数据直接存在变量空间中的)

    • 编译型:先将源代码全部进行编译,生成一个二进制文件,最后运行该二进制文件即可。翻译一本中文书。

  • 动态解释型(Python、JS、Go)

    • 动态:变量没有严格的数据类型之分(数据存在堆内存中,然而变量空间中存储的是数据在堆内存中的地址!)

    • 解释型:读取一行源代码,进行编译,生成一段二进制代码(可以存在于内存 存在于硬盘),在运行,以此类推。同声传译。

1.4 Java开发环境搭建

JDK:Java开发工具包 Oracle | Cloud Applications and Cloud Platform

验证JDK是否安装成功,进入控制台后 输入java -version

C:\Users\HENG>java -version
java version "1.8.0_77"
Java(TM) SE Runtime Environment (build 1.8.0_77-b03)
Java HotSpot(TM) 64-Bit Server VM (build 25.77-b03, mixed mode)

VSCode:写代码的文本编辑器 Visual Studio Code - Code Editing. Redefined

需要设置的内容:

  • 文件编码 左下角管理-设置-文本编辑器-文件-Encoding-Simplified CHinese(GBK)

  • 字体大小 左下角管理-设置-文本编辑器-字体-FontFamliy字体样式-Consolas-FontSize字体大小

  • 主题颜色 左下角管理-颜色主题

  • 中文设置 左下角管理-扩展-搜索Chinese(尽量不要装其他拓展配置了)

1.5 运行Java程序

JDK.exe:Java Development Kit Java开发工具包 如果计算机要进行Java程序的开发 装这个

JRE.exe:Java Runtime Environment Java运行环境 如果计算机只是运行Java程序的话 装这个就可以了

JRE = 核心类库 + JVM       核心类库相当于图书馆

JDK = 开发工具 + JRE

JVM.exe:Java Virtual Machine Java虚拟机

常见的操作系统 Windows Linux MAC -> Unix(最早的多任务的操作系统) + C(底层语言)

JVM充当翻译官的角色,将Java源代码经过编译生成的字节码文件加载进JVM中运行,JVM会根据字节码的具体内容,将其翻译成本地执行语句,交给本地OS执行。对于跨平台机制,是针对字节码文件的,不同的OS平台有其各自的JVM版本。

JAVASe DAY 1_第2张图片

JDK的目录:

  • bin目录:binary 二进制-可执行程序 都是Java在Windows平台上的开发工具

    • javac:编译工具

    • java:运行工具

  • include目录:存放的都是C语言的头文件 JVM需要将字节码的内容转换为本地平台的具体执行指令,用于转换字节码指令的。

  • src.zip压缩文件包:Java的源代码-核心类库

通过WIndows的控制台进入jdk开发工具包的bin目录

C:\Users\HENG>cd /
​
C:\>cd "Program Files"
​
C:\Program Files>cd Java
​
C:\Program Files\Java>cd jdk1.8.0_77
​
C:\Program Files\Java\jdk1.8.0_77>cd bin
​
C:\Program Files\Java\jdk1.8.0_77\bin>
​
C:\Program Files\Java\jdk1.8.0_77\bin>javac
用法: javac            //javac 源代码文件xxx.java
​
C:\Program Files\Java\jdk1.8.0_77\bin>java
用法: java [-options] class [args...]         //java 字节码文件xxx [参数列表]
           (执行类)
   或  java [-options] -jar jarfile [args...]
           (执行 jar 文件)

开发工具和源代码并不在同一个文件夹下,除非给源文件前写全路径,要么给开发工具前写全路径,会比较麻烦,需求在任何目录下都能够执行javac和java这两个开发工具,配置环境变量。

1.6 常见编码错误

编码错误主要分为两种:

  • 编译时错误:主要是编译不通过,主要原因在于语法格式问题

  • 运行时错误:编译能通过,但是运行报错,主要原因在于代码逻辑问题

类名和文件名最好一致,不一致的话容易造成找不到文件类似的错误(如果这个类是public的,类名必须和文件名一致,并且一个java文件中,最多有一个public的类和文件名一致)。字节码的名称和代码中类名一致的,和文件名不一致,为了统一,文件名和类名要一致。

class Text {
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}
C:\Users\HENG\Desktop\22.8.6JavaSE\Day01>javac Test.java    生成的是Text.class文件
C:\Users\HENG\Desktop\22.8.6JavaSE\Day01>java Test
错误: 找不到或无法加载主类 Test
public class Text {
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}
C:\Users\HENG\Desktop\22.8.6JavaSE\Day01>javac Test.java    如果类public的 必须类名和文件名一致!
Test.java:1: 错误: 类Text是公共的, 应在名为 Text.java 的文件中声明
public class Text {
       ^
1 个错误
public class A {
​
}
public class B{
​
}
public class C{
    
}
C:\Users\HENG\Desktop\22.8.6JavaSE\Day01>javac A.java   每一个public的类 独自在一个文件
A.java:4: 错误: 类B是公共的, 应在名为 B.java 的文件中声明
public class B{
       ^
A.java:7: 错误: 类C是公共的, 应在名为 C.java 的文件中声明
public class C{
       ^
2 个错误
public class A {
​
}
class B{
​
}
class C{
​
}
C:\Users\HENG\Desktop\22.8.6JavaSE\Day01>javac A.java   一个文件中有多个类 那么在编译的时候同时生成这么多个字节码文件
2022/08/09  15:06               176 A.class
2022/08/09  15:06               176 B.class
2022/08/09  15:06               176 C.class

在java中,任何单词都是区分大小写的!

public class Hello {
    //主函数 程序的开始-入口
    public static void main(string[] args) {
        System.out.println("HelloWorld!");
    }
}
C:\Users\HENG\Desktop\22.8.6JavaSE\Day01>javac Hello.java
Hello.java:3: 错误: 找不到符号
    public static void main(string[] args) {
                            ^
  符号:   类 string
  位置: 类 Hello
1 个错误
      
代码中和Java核心类库中就压根没有string这个词语

 JVM只认main为主函数!

public class Hello {
    //主函数 程序的开始-入口
    public static void mian(String[] args) {
        System.out.println("HelloWorld!");
    }
}
C:\Users\HENG\Desktop\22.8.6JavaSE\Day01>java Hello
错误: 在类 Hello 中找不到 main 方法, 请将 main 方法定义为:
   public static void main(String[] args)
否则 JavaFX 应用程序类必须扩展javafx.application.Application

错误的单词拼写,遗漏相关的语法符号

public class Hello {
    //主函数 程序的开始-入口
    public stitac void main(String[] args) {
        System.out.println("HelloWorld!");
    }
}
C:\Users\HENG\Desktop\22.8.6JavaSE\Day01>javac Hello.java
Hello.java:3: 错误: 需要<标识符>
    public stitac void main(String[] args) {
                 ^
Hello.java:3: 错误: 方法声明无效; 需要返回类型
    public stitac void main(String[] args) {
                       ^
2 个错误
public class Hello {
    //主函数 程序的开始-入口
    public static void main(String[] args) {
        System.out.println("HelloWorld!")
    }
}
Hello.java:4: 错误: 需要';'
        System.out.println("HelloWorld!")
                                         ^
1 个错误
public class Hello {
    //主函数 程序的开始-入口
    public static void main(String[] args) 
        System.out.println("HelloWorld!");
    }
}
Hello.java:3: 错误: 需要';'
    public static void main(String[] args)
                                          ^
Hello.java:6: 错误: 需要class, interface或enum
}
^
2 个错误
public class Hello {
    //主函数 程序的开始-入口
    public static void main(String[] args) {
        System.out.println("HelloWorld!");
    }
C:\Users\HENG\Desktop\22.8.6JavaSE\Day01>javac Hello.java
Hello.java:5: 错误: 解析时已到达文件结尾
    }
     ^
1 个错误
public class Hello {
    //主函数 程序的开始-入口
    public static void main(String[] args) {
        System.out.println("HelloWorld!);
    }
}
C:\Users\HENG\Desktop\22.8.6JavaSE\Day01>javac Hello.java
Hello.java:4: 错误: 未结束的字符串文字
        System.out.println("HelloWorld!);
                           ^
Hello.java:4: 错误: 需要';'
        System.out.println("HelloWorld!);
                                         ^
Hello.java:6: 错误: 解析时已到达文件结尾
}
 ^
3 个错误
public class Hello {
    //主函数 程序的开始-入口
    public static void main(String[] args) {
        System.out.println(HelloWorld);
    }
}
C:\Users\HENG\Desktop\22.8.6JavaSE\Day01>javac Hello.java
Hello.java:4: 错误: 找不到符号
        System.out.println(HelloWorld);
                           ^
  符号:   变量 HelloWorld
  位置: 类 Hello
1 个错误

运行时异常,主要跟你的代码逻辑有关。

public class Hello {
    //主函数 程序的开始-入口
    public static void main(String[] args) {
        System.out.println(10 / 0);
    }
}
C:\Users\HENG\Desktop\22.8.6JavaSE\Day01>java Hello
Exception in thread "main" java.lang.ArithmeticException: / by zero
        at Hello.main(Hello.java:4)

1.7 编程练习题

重点代码格式问题!(1.注意符号和数字直接要空格 2.大括号前面要空格)

public class Demo02 {
    public static void main(String[] args) {
        System.out.println(4 * (1 - 1 / 3 + 1 / 5 - 1 / 7 + 1 / 9 - 1 / 11));
        System.out.println(4 * (1.0 - 1.0 / 3 + 1.0 / 5 - 1.0 / 7 + 1.0 / 9 - 1.0 / 11));
    }
}

第2章 基本数据与运算

2.1 注释、标识符与关键字

注释

Java中分为三种注释:

  • 单行注释://注释内容 直到换行为止

  • 多行注释:/*注释内容 中间可以跨行 但是多行注释中 不能出现多行注释 但可以出现单行注释*/

  • 文档注释:/** 注释内容 可以通过javadoc命令 将注释的内容进行提取 并生成一份该代码的说明书 生成的是一个HTML文档 静态网页*/

注释是用于注解说明程序的,给人看不给计算机看,所以注释进不进字节码?不进

将来再写代码的时候,重点的地方尽量把注释写上

标识符(程序中出现的一些事物所起的名称)

所谓的标识符就是我们自定义的一些名称而已,主要用于给变量名、函数名、类名、包名、常量名。

为了把上述这五个通过命名方式进行区分,订出来了一套规范。

标识符的规则:

  • 必须是一个连续的词语,中间不能有空格

  • 由字母、数字、下划线_、美元符$组成

  • 数字不能开头,从JDK8开始之后,也不建议单独的下划线和美元符组成标识符

  • 严格区分大小写字母

  • 起名一定要有意义,英文不好那就写拼音

标识符的规范:myname person maxvalue yourfriend

  • 变量名/函数名:如果名称由多个词语组成的话,第一个单词首字母小写,其他单词首字母大写 myName yourFriend()

  • 类名/接口名:如果名称由多个词语组成的话,所有单词首字母大写 Person YourFriend

  • 常量名:所有单词大写,单词与单词之间用下划线分隔,MAX_VALUE

所谓的规范,其实就是通过单词长得样子,快速区分出标识符的作用。

关键字

所谓的关键字,其实就是Java自身定义的一些标识符,这些标识符都已经尤其自身的含义了,我们就不能在随意使用!所有的关键都小写。

public class Hello {
    public static void main(String[] args) {
        System.out.println(10 / 0);
    }
}

关键字:public class static void

自定义标识符:Hello main args

类:Hello String System

变量:args out

函数:main() println()

你可能感兴趣的:(java,开发语言)