第二章:java基础语法
2.1注释
2.1.1什么是注释?
在java的编写过程中,对一些程序进行标注,添加解释说明的文字,用来帮助别人和自己去读懂自己写的代码。
注意:注释是源代码(.java文件)时期的行为,字节码文件(.class文件)中不存在注释内容
2.1.2.注释的分类
注释分类 | 书写格式 | 注意事项 |
---|---|---|
单行注释 | //注释内容 | 只能单行注释 |
多行注释 | /* 注释内容 */ | 能够多行注释,但不能和文档注释嵌套使用 |
文档注释 | /** 注释内容 */ | 可以注释多行并且生成帮助文档(后面会学,先了解) |
2.1.3了解文档注释的使用方式
javadoc -d ./doc -header 老薛的文档 -doctitle 第一个文 档注释练习 -authour -version*Demo04.java
- -d生成的.html所在的路径
- *类名指定解析某个.java文件
- -author -version你的文档型注释中写个那些注解,就指定那些关键词
2.2标识符
2.2.1什么是标识符?
- 定义:java中为类、变量、接口、数组等起名字,用来标示的符号,统统称为java标识符
2.2.2书写的三个规则
- 不能以数字开头,以字母、下划线、 符 号 开 头 , 后 跟 字 母 、 下 划 线 、 符号开头,后跟字母、下划线、 符号开头,后跟字母、下划线、符号及数字结尾
- 不能是java的关键字
- 严格区分大小写,长度无限制(虽然没有规定长度,一般不要写太长,以免给自己造成拼写错误)
2.2.3书写的两个标准
- 见名知意:看见文件名或者代码的类名就知道是用来干嘛的!
- 驼峰原则 :当变量或者类名及函数需要多个英文单词组成时,每一个单词的首字母要大写。但第一个单词的首字母可大写,也可以小写(这个根据变量或者类名及函数的特殊要求来定)
- 类名书写:NanChangMaGe 首字母大写其后每个单词的首字母均大写
- 变量名书写:setNameYear 首字母小写其后每个单词的首字母均大写
2.2.3书写一个注意事项
- 可以使用中文,但不推荐使用,一旦编译时字符集不一样,会出现乱码,造成人看不懂代码(后面内容会讲乱码、字符集)
2.3关键词
- 关键词定义:在java中对于某些单词已经存在了自己特殊的用法以及逻辑
- 注意:goto、include不推荐使用,是保留字(c语言中的关键字)
- true、false、null–>也是关键词,千万不要忘记
2.4字符集合
2.4.1字符集合的作用
- 字符集合就是一本字符和计算机二进制的之间的关系
2.4.2什么是字符?
- 字符是各种文字和符号的总称,包括各个国家文字、标点符号、图形符号、数字等。举例:相当于【字符集图】中红色标注的内容
2.4.3什么是字库表?
- 字库表相当于一个所有可读或者可显示字符的数据库(可读的字符不一定能够直观的显示出来,如回车)。它决定了编码字符集能够展示的字符范围,每一种编码字符集,都对应的一个字库表。常见的字符集合名称:ASCll字符集(美国信息交换表)、GBk字符集(中国大陆的字符集)、BIG5字符集(中国台湾的字符集)、Unicode字符集等。目前市面上的字符集合统一采用的是Unicode字符集中的一种utf-8。因为Unicode字符集支持现今世界各种不同语言的书面文本交换、处理及显示。
- 例如:ASCII字符集,对应的字库表就是由换行、回车、等控制字符、数字、大小写字母、英文标点符号等128个字符组成的,并且着128个字符,是按照一定顺序来排列的。
- 注意:字库表本身只包含按照顺序排列的字符,而不包含标记字符的位置的序号
2.4.4什么是字符编码?
- 字符编码是把字符集中的字符编码为指定集合中某一对象(例如:比特模式、自然数序列、8位组或者电脉冲),以便文本在计算机中存储和通过通信网络的传递。(例如:ASCII将字母、数字和其他符号编号,并用7比特的二进制来表示这个整数,通常会额外使用一个扩充的比特,以便于1个字节的方式存储)
- 简而言之,字符编码是编码字符集的字符和实际的存储值之间的转换关系(常见的编码方式:ASCII字符集的编码方式、UTF-8[Unicode字符集的编码方式]),通过这种规则,就可以把存储二进制的数据转换成对应的字符,或者把字符转换为用于存储的二进制数据。
2.4.5什么是编码字符集?
- 指字库表中所有字符以及对应的编码的集合。每一个编码(code point),都是一个二进制代码(计算机采用二进制),且都对应着字库表中的一个字符,而该编码一般取值为字符在字符表中的位置序号 举例:相当于【字符集图】中的绿色标注的内容
2.5乱码
2.5.1乱码产生的原因
- 由于java程序编写时和运行时的字符集合不统一造成了乱码问题。
2.5.2乱码解决办法
-
java程序编写时和运行时的字符集合统一,用统一种字符集合,就不会产生乱码。
- 解决方案一:.java文件的字符集合是UTF-8,windows操作系统的cmd命令行中,默认的字符集合是GBK(不允许改动),只能修改文件的字符集合,在工具(notepad++)中的格式中选择转为ANSI编码格式
- 解决方案二:修改字符集合的方式
##在编译字节码文件时指定字符集合
C:\Users\wawjy\Desktop\javacode\code02>javac -encoding utf-8 Demo06.java
C:\Users\wawjy\Desktop\javacode\code02>java Demo06
我的一个错误的乱码程序
2.6变量
2.6.1什么是变量?
- java程序在运行时,用来装数据的,且其值可以发生改变的
2.6.2为什么需要变量?
- 在编写程序完后执行时,执行过程中需要进行一些运算,得到的运算过程中的结果,需要一个容器来存储数据,暂时去存储一个数值,以便程序在生命周期可以通过容器获取或者修改里面的值。
2.6.3变量的要素
- 数据类型(存储的具体的值是有范围)
- 变量名(给具体的值起一个名字)
- 作用范围/生命周期(当前这个变量能够起到作用的范围)
2.6.4如何使用变量
- 声明一个变量
- 给变量赋值
- 使用变量
public class Demo01{
public static void main(String[] args){
//声明一个变量
inta;
//给变量a赋值
a=10;
System.out.println(a);
}
}
2.6.5变量使用注意事项
- 在.java文件中,声明变量是,变量名一定要遵守标识符的命名规则,并且变量名首字母必须要小写,其后单词首字母要大写
- 在.java文件中,对于变量而言,一定要声明并赋值后才可以用
- 在main()方法中不能定义同名变量,否自编译报错
- 在程序运行期间,可以直接通过变量名重新给变量赋值
- 变量的声明和赋值一般可以在同一行完成:
int num=10;
2.7数据类型
- java是一门强类型语言,所有的数据都是有类型的。而弱类型:js(var)、C语言
2.7.1整数类型
i.整数的取值范围表
类型名称 | 数据类型 | 所占空间 | 表示数的范围 |
---|---|---|---|
字节型 | byte | 1字节 | -128~127 |
短整型 | short | 2字节 | -215~215 -1 |
整型 | int | 4字节 | -231~231 -1 |
长整型 | long | 8字节 | -263~263 -1 |
建议:如果碰到了比long还要大的数据进行运算可以使用BigInteger(后续会讲)
整数类型的注意事项:
- 在java中如果给byte和short赋值时,只要整数的字面值没有超过byte和short的范围就可以正常赋值。
- 在java中所有的整数的默认类型都是int类型。当把一个超过了int范围的整数赋值给一个long类型变量的时候,需要在整数后面加"l"或者是"L"(推荐使用L)
ii.整数的赋值方式
**二进制赋值:**以0b/0B开头后跟一个二进制的数字。(注意二进制的赋值方式是从jdk1.7之后才出现的)
//1:二进制的赋值方式
int num1=0B101;
System.out.println(num1);
**八进制赋值:**以0开头后跟一个八进制的数字
//2:八进制赋值方式
int num2=027;
System.out.println(num2);
**十进制赋值:**正常赋值(当一个数字过长,可以通过用_分割线分割当前数字)
//3:十进制赋值方式
int num3=123_456;
System.out.println(num3);
**十六进制:**以0x开头后跟一个十六进制的数字.(注意10–>A,11–>B,12–>C,13–>D,14–>E,15–>F)
//4:十六进制
int num4=0xFF;
System.out.println(num4);
2.7.2浮点类型
i.浮点数的精度范围
类型名称 | 数据类型 | 所占空间 | 精度 |
---|---|---|---|
单精度 | float | 4字节 | 5~7位 |
双精度 | double | 8字节 | 15~16位 |
小数的注意事项:
- 在java中所有的小数的默认类型都是double类型的,当把一个小数赋值给一个float变量时一定要在小数后面加“f”或者是“F”(推荐使用f)。
- 在计算机中的小数存储是一个近似值,以后的项目中尽量要避免使用小数进行四则运算。后续学习BigDecimal处理小数的运算。
- 在java中小数中有三个特别奇怪的值
- Infinity
System.out.println(1/0.0);
- -Infinity
System.out.println(-1/0.0);
- NaN(not a number)
System.out.println(0.0/0.0);
NaN自己和自己比较都不相等的数。
- Infinity
ii.小数的赋值方式
**正常赋值:**正常赋值一个小数,注意如果小数点前面为0,此时0可以省略(不推荐使用)
//正常小数赋值
double num=0.05;
System.out.println(num);
科学计数法:
doublepi=3.1415e3;
System.out.println("科学计数法表示pi的值是:"+pi);
- e和E都可以
- e前面的值一定是一个0<x<10(0,10)
- e后面的数必须保证是整数,可以正负。正->小数点往右移动的位数,负->小数点往左移动的位数
2.7.3布尔型(逻辑型)
boolean类型只有两个值:一个是true,一个是false
//声明一个变量存放boolean值
boolean flag=true;
System.out.println(flag);
注意事项:
- boolean实际只有占1位,但是会按照byte给它分配内存1个字节空间
- 实际存储时,1代表true,0代表false
- java中不能够直接通过1和0给boolean变量赋值。(编译器不会编译通过)
2.7.4字符型
i.字符型的取值范围
数据名称 | 数据类型 | 所占空间 | 表示数的范围 |
---|---|---|---|
字符型 | char | 2个字节 | [0,65535] |
字符类型的注意事项:
- 通过一组单引号引起来的单个字符。(不能是0个字符也不能是多个字符更不能是双引号)
- 通过一个数字赋值(一个字符其实就是对应的一个数字),char类型表示的字符真实存储时是按照字符集合表中字符对应的数字进行存储的。例如:A->65 a->97
- char类型可以参与四则运算
ii.字符型赋值方式
**直接赋值:**通过一组单引号引起来的单个字符。(注意:不能是0个字符也不能是多个字符也不能是双引号)
char ch='A';
System.out.pritnln(ch);
**数学赋值:**通过一个数字赋值(一个字符其实就是对应的一个数字),char类型表示的字符真实存储时是按照字符集合表中字符对应的数字进行存储的。例如:A->65 a->97
char ch=65;
System.out.println(ch);
Unicode赋值:(了解即可)
//声明一个char类型的变量通过Unicode赋值'\u0000'(空格)
char ch='\u0000';
System.out.println("----"+ch+"----");
**转义字符:**就是用来转变含义的字符,在java中有一些字符有自己的含义,此时我们需要通过转义字符\改变当前字符的含义。
-
常见的转义字符:
-
\t一个制表符位8个空格,要注意会和前面的字符累加查看是否有8位,如果不够通过空格填充8位,中文是两个字节
System.out.println("abcdefghigklmn"); System.out.println("abcd\tefghigklmn"); System.out.println("abcdefghigklmn"); System.out.println("abcdefgh张三\tigklmn");
-
-
\n换行
System.out.print("北京欢迎你\n"); System.out.print("我就去看看");
-
转义字符显示\和“
System.out.println("\\"); System.out.println("\"");