java基础
关键字总结
关键字:被java语言赋予特定含义的单词,比如public;组成关键字单词的字母全部是小写的。
注:goto和const是保留字,目前并不使用。
关键字一览表如下图所示:
标识符总结
标识符:实质就是给类、接口、方法、变量起名字
标识符的组成包括1)英文字母大小写;2)数字字符;3)$和_
标识符注意事项:1)不能以数字开头;2)不能是java关键字;3)严格区分大小写,y1和Y1是两个不同的标识符。
常见的命名规则:
包:可以理解为文件夹,其作用就是为了把相同的类名进行区分,包名要全部小写
类名或者接口名:一个单词的时候,单词的首字母必须大写,比如:Student,Dog;
多个单词的时候,每个单词的首字母必须大写,比如:HelloWorld。
方法或者变量:一个单词时,单词的首字母小写,比如:age;
多个单词时,从第二个单词开始,每个单词的首字母大写,比如:StudentName,showName()。
常量:一个单词时,全部大写,比如PI;多个单词时,咩个字母都大写,用_隔开,比如MIN_AGE
常量
常量:在程序的执行过程中,其值不会发生改变的量。分为字面值常量和自定义常量
字面值常量
- 字符串常量:用双引号括起来的内容。比如“hello java"
- 整数常量:所有的整数。比如:100,200
- 小数常量:所有的小数。比如:1.2,10.11
- 字符常量:用单引号括起来的内容。比如’a’,‘b’,(‘ab’是错误的)
- 布尔常量:true,false(注意,是小写)
- 空常量:null
不同进制数据表现
二进制:由0,1组成,以0b开头;
八进制:由0,1,…,7组成,以0开头;
十六进制:由0,1,…,9,a,b,c,d,e,f(大写也可)组成,以0x开头。
数据类型
java是一种强类型的语言,针对每一种数据都定义了明确的数据类型。
数据类型分类
A.基本数据类型;
B.引用数据类型(类,接口,数值)
基本数据类型(4类8种)
A.整数
数据类型 | 占用字节数目 |
---|---|
byte | 1 |
short | 2 |
int | 4 |
long | 8 |
B.浮点数
数据类型 | 占用字节数 |
---|---|
float | 4 |
double | 8 |
C.字符
数据类型 | 占用字节数 |
---|---|
char | 2 |
D.布尔
数据类型 | 占用字节数 |
---|---|
boolean | 1 |
整数默认是int类型,浮点数默认是double类型;长整型后缀用L或l标记。单精度浮点数用F或f标记。
变量注意事项
-
作用域
变量定义在哪个大括号内,它就在这个大括号内有 效,并且,在同一个大括号内不能同时定义同名的变量。 -
初始化值
没有初始化值的变量不能直接使用;只要在使用前给值就行,不一定非要在定义的时候立即给值;推荐在定义的时候给值。
定义变量的格式:
a.数据类型 变量名 = 初始化值;
b.数据类型 变量名;
变量名 = 初始化值
类型转换
默认转换(从小到大的转换)
A.byte,short,char-int-long-float-double
B.byte,short,char相互之间不能转换,他们参与运算首先转换为int类型
强制转换(从大的数据类型到小的数据类型)
格式:目标数据类型 变量 = (目标数据类型)(被转换的数据);
注:强制转换会导致精度损失,在使用的时候三思
典型面试题
byte b1=3,b2=4,b;
b=b1+b2;
b=3+4;
上面的代码中哪一句会编译失败,请说明理由
答案:
b=b1+b2;是有问题的。因为变量相加,会首先看类型问题,最终把结果赋值得也会考虑类型问题;常量相加,首先做加法,然后看结果是否在赋值的数据类型范围内,如果不是,才报错。
byte b = 130;
上述代码的问题在哪里,如果想要代码正确运行,应该怎样修改,最后输出的正确结果是多少?
答案:
A.获取130这个数据的二进制。
00000000 00000000 00000000 10000010
这是130的原码,也是反码,也是补码
B.做截取操作,截成byte类型
10000010
这个结果是补码
C.已知补码求原码
符号位 | 数值位 | |
---|---|---|
补码 | 1 | 0000010 |
反码 | 1 | 0000001 |
原码 | 1 | 1111110 |
所以最终的结果为-126
class Demo{
public static void main(String[] args{
byte b = (byte) 130;
System.out.println(b);
}
}
-126
字符串与其他数据的’+‘运算
字符串数据(不是字符数据)与其他数据做+,结果是字符串类型,这里的+不是加法运算,而是字符串连接符。
class Demo {
public static void main(String[] args) {
System.out.println("hello"+'a'+1);
System.out.println('a'+1+"hello");
System.out.println("5+5="+5+5);
System.out.println(5+5+"=5+5");
}
}
helloa1
98hello
5+5=55
10=5+5