java基础课程笔记整理——Chapter2

JAVA基础知识1

标识符与关键字

标识符:用来标识类名、变量名、方法名、类型名、数组名、文件名的有效字符序列称为标识符(即一个名字)
语法规则
由字母,下划线,数字,美元符号$组成,且第一个字符不能是数字
标识符不能有关键字
标识符不能是true,false,null(它们不是Java关键字)
Java语言使用Unicode标准字符集

关键字:Java语言中已经被赋予了特定意义的一些单词,不能作为标识符

命名规则

1.匈牙利命名规则(大驼峰)

String MyCourseName="JAVA";  //所有单词首字母大写,类名习惯采用该规则

2.JAVA命名规则(小驼峰)

String myCourseName="JAVA";   //第一个单词首字母小写,第二个及之后的单词首字母大写
                              //变量名和方法名习惯采用该规则                         

3.UNIX命名规则

String my_course_name="JAVA";  //字母全部小写,单词间用下划线隔开

编译风格

在编写Java程序时,许多地方都涉及使用一对大括号,如类的类体,循环语句的循环体等,即俗称的“代码块”,都是用一对大括号括起的若干内容。
它有两种流行的写法:Allmans风格和Kernighan风格
Allmans风格也称“独行”风格,即左、右大括号各自独占一行,当代码量较小时适合使用这种分格,代码布局清晰,可读性

Kernighan风格也称“行尾”风格,即左大括号在上一行,而右大括号独占一行,当代码量较多时不适合用“独行”风格,代码清晰度会降低,而适合用“行尾”风格

注释:为了便于代码的维护和阅读
两种注释格式:单行注释,多行注释
单行注释://….
多行注释:
/*……
…………
*/

数据类型

引用数据类型

引用数据类型
数组
接口

基本数据类型

基本数据类型
逻辑类型 boolean
字符类型 char
整数类型 byte short int long
浮点数类型 float double

逻辑类型:
常量:true ,false
变量:使用关键字boolean来声明逻辑变量,声明时也可以赋给初值
【注意:C语言规定逻辑类型可以和数值类型互换——非0为true,JAVA语言中逻辑类型和数值类型不可互换】

整数类型:

byte型:
使用byte来声明变量,占1个字节,可以把一定范围的int型常量给byte变量。Java中不存在byte常量的表示法,如果需要强调一个整数是byte类型数据时,可以使用强制类型转换运算的结果来表示eg(byte)12

short型:
使用short来声明变量,占2个字节,可以把一定范围的int型常量给short变量。Java中不存在short常量的表示法,如果需要强调一个整数是short类型数据时,可以使用强制类型转换运算的结果来表示eg(short)12

int 型:
常量:十进制,八进制(0开头),十六进制(0x开头)
变量:使用int声明,占4个字节,-231~231-1

long型:
常量:用后缀L来表示(eg108L十进制,0342L八进制,0x23L十六进制)
变量:用long声明变量,占8个字节

字符类型:
常量:用单引号括起来的Unicode表中的一个字符
变量:使用关键字char来声明char型变量,占2个字节,最高位不是符号位,没有负数
注意特殊的常量:转义字符常量,eg \u (unicode编码值)

注:要知道一个字符在Unicode表中的顺序位置,可以使用(int)进行类型转换;如果要得到一个0~65535之间的数所代表的Unicode表中位置相应的字符必须使用(char)类型显性转换

浮点类型:

float型:
常量:小数表示法和指数表示法,!!!在常量后面必须要有后缀“f”或“F”
变量:使用float声明,占4个字节。float变量在存储float型数据时保留8位有效数字,实际精度取决于具体数值

double型:
常量:小数表示法和指数表示法。对于double类型的常量后面可以有后缀“D”或“d”,也可以省略
变量:使用double声明,占8个字节,存储时保留16位有效数字,实际精度取决于具体数值(相对float的保留有效数字,称之为双精度)

基本数据类型的数据类型转换

基本数据类型(不包括boolean型)按精度从“低”到“高”排列:
byte short char int long float double
规则:
1.将级别低的变量的值赋给级别高的变量时,系统会自动完成数据类型转换
2.把级别高的变量的值赋给级别低的变量时,必须手动进行显示类型转换(强制类型转换)

【BH补充注意事项】:
1.强制类型转换一般不推荐使用,因为有可能发生精度损失,数据溢出
2.byte,short,char这三种数据类型都可以发生数学运算,它们在运算时,都会首先自动转换成int类型然后再计算
3.boolean类型不能发生数据类型转换
4.对于byte,short,char数据类型来说,右边为级别高类型的常量,没有写强制类型转换,如果右边数据没有超出范围,那么javac编译器会自动隐含地补上(byte),(short),(byte),如果超出范围,编译器会直接报错
5.在变量进行赋值的时候,如果右侧的表达式中全部是常量,没有任何变量,那么编译 javac会直接将若干常量计算得到结果
eg short result=3+5;编译之后,class字节码文件中就相当于short result=13;
这种称为编译器的常量优化
但要注意,一旦表达式当中有变量参与,那么就不能进行这种优化了
eg

 short a=3,result;
result=a+5;  // 编译器会报错,int不能赋给short类型

6.整数常数没加后缀则表示int型,浮点数没加后缀表示double型

输入

Scanner 是JDK1.5后新增的一个类,可以使用该类创建一个对象eg

Scanner in =new Scanner(System.in);

然后in对象调用下列方法,读取用户在命令行(eg MS-DOS窗口)输入的各种基本类型数据:nextBoolean();nextByte();nextInt();next.Short();next.Long();nextFloat();nextDouble();
nextLine();上述方法执行时都会堵塞,程序等待用户在命令行输入数据并按Enter键确认

Scanner 对象可以调用hasNextXXX()方法判断用户输入的数据类型
当输入带小数点的数据eg13.14时,in.hasNextDouble()返回值为true,而in.hasNextInt()等的返回值为false;
当输入一个byte取值范围内的整数时eg11,则in.NextByte(),in.NextInt(),in.NextDouble(),in.NextLong()等的返回值是true
可以利用这个来结束未知次数的循环输入eg

while(in.NextDouble()){
…..
}//当输入非数字数据时in.NextDouble返回值为false,循环结束

输出

System.out.println()System.out.print()可输出串值、表达式的值,两者的区别在于前者输出数据后换行,后者不换行。
【注意事项】:
“+”:
1.对于数值类型(整数,浮点数)来说,就是加法(byte,short会先被提升为int)
2.对于char类型来说,在计算之前,char会被提升为int,然后计算
3.对于字符串String来说,加号代表字符串连接操作;任何数据类型和字符串连接的时候都会变成字符串(注意优先级)

另外,JBK1.5版本新增了和C语言中printf函数类似的数据输出方法,使用格式如下:
System.out.printf(“格式控制部分”,表达式1,….,表达式n)
格式控制部分由格式控制符号和普通字符组成,普通字符原样输出,格式控制符号用来输出表达式的值
%d:输出int型数据值
%c:输出char型数据
%f:输出浮点型数据,小数部分最多保留6位
%s:输出字符串数据
输出数据也可以控制数据在命令行的位置,eg:
%md:输出的int型数据占m列
%m.nf:输出的浮点型数据占m列,小数点后保留n位
不足m列右对齐,超出了m列则按原数据的列数输出

上一篇:【代码粗读】Attention-Based Bidirectional Long Short-Term Memory Networks for Relation Classification


下一篇:3.1.3 short、int和long