01 注释
单行注释:
// 单行注释可以注释一行文字
多行注释:
/*
多行注释可以注释一段文字
*/
文档注释:
/**
*配合JavaDoc使用
*/
02 标识符与关键字
关键字:class,public等Java硬性要求的代码。
标识符:类名,变量名,方法名都是标识符。
标识符的注意事项:
-
所有标识符都应该以字母,$,或者下划线(_)开始
String name = "xiaofang"; String $name = "xiaofang"; String _name = "xiaofang";
-
首字母之后可以是字母,$,或者下划线(_)或者数字
String A$ = "xiaofang"; String A_ = "xiaofang"; String A1 = "xiaofang";
-
不能使用关键字作为变量名或方法名
-
标识符不建议使用中文
-
标识符是大小写敏感的
03 数据类型
Java是强类型语言,要求所有变量都必须定义后才能使用。
基本数据类型如下表所示:
整数类型 | 浮点类型 | 字符类型 | 布尔类型 |
---|---|---|---|
byte占1字节 | float占4字节 | char占2字节 | true占1位 |
short占2字节 | double占8字节 | false占1位 | |
int占4字节 | |||
long占8字节 |
//整数
byte num = 10;
short num1 = 15;
int num2 = 20;
long num3 = 30L;//long类型要在数字后加上L
//浮点数
float num5 = 10.1f;//float类型要在数字后加上f
double num6 = 10.33333;
//字符
char name = 'f';//注意String不是关键字
//布尔
boolean flag = true;
boolean flag1 = false;
字节与位的关系:1 Byte=8 bit
数据类型面试拓展
- 整型拓展:
int i = 10;//输出10
int i2 = 010;//八进制0开头 输出8
int i3 = 0x10;//十六进制0x开头(范围:0~9 A~F) 输出16
-
浮点数拓展:
由于浮点数有舍入误差,接近但不等于的特点,最好不适用浮点数进行比较,可以使用BigDecimal提供的方法进行比较。
-
字符拓展:
所有字符的本质还是数字
char s1 = 'a'; char s2 = '小'; System.out.println(s1);//输出 a System.out.println((int)s1);//强制转换 输出 97 System.out.println(s2);//输出 小 System.out.println((int)s2);//强制转换 输出 23567
-
布尔拓展:
boolean flag =true; if(flag){} == if(flag==true){}//二者是等价的
04 类型转换
- 强制类型转换:一般是高容量转换到低容量的转换。格式:(类型)变量名
int i = 12;
byte b = (byte)i;
System.out.println(i);//输出12
System.out.println(b);//输出12
-
自动类型转化:低容量到高容量直接转换。
低 ------------------------------------->高 byte,short,char->int->long->float->double
int i = 12; double b = i; System.out.println(i);//输出12 System.out.println(b);//输出12.0
-
注意点
- 布尔类型不能进行转换
- 转换的时候可能出现内存溢出,或者精度问题
//溢出问题
int money = 10_0000_0000;//数字之间可以用下划线分割
int year = 20;
int total = money*year;//计算时溢出 输出为-1474836480
long total1 = money*year;//默认为int类型,转换之前就出了问题。所以输出依旧是-1474836480
long total2 = money*((long)year);//输出20000000000
//精度问题
System.out.println((int)23.7);//输出23
System.out.println((int)-20.4f);//输出-20