JavaSE总结
[TOC]
一、day01
JRE(Java Runtime Evironment):Java运行环境。包括Java虚拟机和Java核心类库及其支持文件。
JDK(Java Development Kit):Java开发工具包 。除了JRE外,还包括Java的开发工具,比如编译器(Java.exe),打包工具(jar.exe)等。
二、day02
2.1 关键字
2.1.1 定义:被java赋予特殊含义的单词。
2.1.2 特点:全部小写。
2.2 标识符
2.2.1 定义:给类、接口、变量等命名的字符序列。
2.2.2 组成:
(1)区分大小写的字母。
(2)数字
(3)$和_
2.2.3 命名规则:
(1)类、接口:单个单词:首字母大写。多个单词:每个单词首字母大写。
(2)变量、方法:单个单词:首字母小写。多个单词:第二个单词开始首字母大写。
(3)包:单级包:全部小写。多级包:用.隔开,全小写。
(4)常量:单个单词:全部大写。多个单词:全部大写,并用_隔开
2.3 注释
//单行注释
/*多行注释*/
/**文档注释*/
2.4 常量
2.4.1 定义:在程序执行过程中其值不发生改变的量。
2.4.2 分类:字面值常量和自定义常量
2.4.3 字面值常量:
整型常量,浮点型常量,布尔常量,字符常量,空常量,字符串常量。
2.4.4 整型常量的四种表现形式:二进制,八进制,十进制,十六进制。
2.5 进制转换
2.5.1 其他进制转到十进制
基数:X进制的基数就是X
系数:该数据每位上的数字就是该数据在此位的系数。
权:从右向左,从0开始编号,每个号码就是数据该位上数字的权。
结果:系数*基数的权次幂之和。
2.5.2 十进制转到其他进制
除以基数取余,直到商为0,余数反写。
2.5.3 进制间的快速转换法
(1)二进制转十进制:8421码
(2)二进制转八进制:从右往左,三位一隔,不够补0,然后按照二进制转十进制的方法对每三位进行转换,最后将转换后的数据拼接。
(3)二进制转十六进制:从右往左,四位一隔,不够补0,然后按照二进制转十进制的方法对每四位进行转换,最后将转换后的数据拼接。
2.5.4 浮点数的二进制与十进制转换
(1)十进制转二进制
小数部分乘2,取结果的整数部分,之后将结果的小数部分乘2,取结果的的整数部分,以此类推,直到结果为0或一直循环为止。
(2)二进制转十进制
小数部分从左往右,依次乘1/2,1/4,1/8…,求和。
2.6 变量
2.6.1 定义:
在程序执行过程中,其值可能发生改变的量。
2.6.2 声明格式:
方式1:
数据类型 变量名 = 初始化值;
方式2:
数据类型 变量名;
变量名 = 初始化值;
注意:局部变量需要自己给初始化值后才能使用,成员变量初始化时会自动赋值。
2.7 数据类型
2.7.1 定义:
Java对于每一种数据都给予对应的数据类型。
2.7.2 分类:
(1)基本数据类型:
数据类型 | 占用字节数 |
---|---|
byte | 1 |
short | 2 |
int | 4 |
long | 8 |
float | 4 |
double | 8 |
boolean | 1 |
char | 2 |
注意:整数默认int类型,浮点数默认double类型。long类型整数要加l或L,float类型浮点数要加f或F。
(2)引用数据类型:类,接口,数组等。
2.7.3* float类型数据在内存中是如何存储的?
float类型数字在计算机中用4个字节存储。遵循IEEE-754格式标准:
一个浮点数有2部分组成:底数m和指数e
底数部分 使用二进制数来表示此浮点数的实际值
指数部分 占用8bit的二进制数,可表示数值范围为0-255
但是指数可正可负,所以,IEEE规定,此处算出的次方必须减去127才是真正的指数。
所以,float类型的指数可从-126到128
底数部分实际是占用24bit的一个值,但是最高位始终为1,所以,最高位省去不存储,在存储中占23bit
科学计数法。
格式:
SEEE EEEE EMMM MMMM MMMM MMMM MMMM MMMM
S表示浮点数正负
E指数加上127后的值得二进制数据
M底数
举例:
17.625在内存中的存储
首先要把17.625换算成二进制:10001.101
整数部分,除以2,直到商为0,余数反转。
小数部分,乘以2,直到乘位0,进位顺序取。
在将10001.101右移,直到小数点前只剩1位:
1.0001101 * 2^4 因为右移动了四位
这个时候,我们的底数和指数就出来了
底数:因为小数点前必为1,所以IEEE规定只记录小数点后的就好。所以,此处的底数为:0001101
指数:实际为4,必须加上127(转出的时候,减去127),所以为131。也就是10000011
符号部分是整数,所以是0
综上所述,17.625在内存中的存储格式是:
01000001 10001101 00000000 00000000
换算回去:自己做。
2.8 数据类型转换
2.8.1 默认转换
byte,short,char–int–long–float–double
byte,short,char之间不进行转换,三者进行运算时,先转成int类型后再进行运算。
boolean类型不参与转换。
2.8.2 强制转换
可能损失精度,一般不建议使用。
声明格式:
目标数据类型 变量名 = (目标数据类型) (被转换的数据);
2.8.3 例题
1.
下面两种方式有区别吗?
float f1 = 12.345f;
float f2 = (float)12.345;
//f1是通过double转换过来的,f2本身就是float类型。
2.
byte b1=3,b2=4,b;
b=b1+b2;
b=3+4;
哪句是编译失败的呢?为什么呢?
1 | b=b1+b2编译失败。 |
1 | b=3+4编译成功。 |
3.
byte b = 130;有没有问题?如果我想让赋值正确,可以怎么做?结果是多少呢?
1 | 有问题,可能损失精度。因为byte的范围是-128~127。130不在此范围内,所以报错。 |
3.1:
byte b = 300;
1 | 有问题,可能损失精度。因为byte的范围是-128~127,300不在这个范围内,所以报错。 |
4.
看程序写结果:
System.out.println(‘a’);
1 | a |
System.out.println(‘a’+1);1
2
3
498
'a' 97
'A' 65
'0' 48
System.out.println(“hello”+’a’+1);1
2helloa1
字符串数据和其他数据做+,结果是字符串类型。
System.out.println(‘a’+1+”hello”);1
98hello
System.out.println(“5+5=”+5+5);1
5+5=55
System.out.println(5+5+”=5+5”);1
10=5+5
5.
17.625在float类型中是如何存储的?写出过程。
(1)整数部分转为二进制
(2)小数部分转为二进制
(3)移动小数点找到底数和指数,指数加上127
底数:因为小数点前必为1,所以IEEE规定只记录小数点后的就好,所以,此时的底数为0001101.
指数:实际为4,必须加上127,所以为131,也就是10000011.
(4)在float4个字节中的存储顺序为:
符号部分+指数部分+底数部分+后面补0
结果:
01000001 10001101 00000000 00000000
6.
Java语言中的字符char可以存储一个中文汉字吗?为什么?
可以。因为Java语言中的字符占用两个字节。
注意:Java语言采用的是Unicode编码。