Day05——Java基础知识
注释
-
单行注释:只能注释当前行,以//开始,直到本行结束
//单行注释
-
多行注释:注释一段文字
/*多行注释
注释并不会被计算机编译
注释是为了提高程序代码的可读性*/
-
文档注释:(又称 说明注释)用于生产API文档,配合JavaDoc。
说明注释在程序中嵌入关于程序的信息。可以使用 JavaDoc 工具软件来生成信息,并输出到HTML文件中,使你更加方便的记录你的程序信息。
以/** 开始,以*/结束。
/**
* 这个类演示了文档注释
* @AuThor 明天也有晚霞嘛 //作者
* @version 1.8 //使用版本
*/
关键字
百度百科——关键字
标识符
类名、变量名以及方法名都被称为标识符。
数据类型
Java的数据类型分为两大类:
1B(byte,字节)=8bit(位)
整数拓展
-
二进制:0b开头,0b101=5;
-
八进制:0开头,010=8;
-
十六进制:0x开头,0x10=16; 0~9 A~F
浮点拓展
浮点数一般都存在舍入误差,无法精确表示,其结果只能是接近。
Java.math下面的两个有用的类:BigInteger和BigDecimal,这两个类可以处理任意长度的数 值。BigInteger实现了任意精度的整数运算。BigDecimal实现了任意精度的浮点运算。
字符型拓展
单引号用来表示字符常量。例如‘A’是一个字符,它与“A”是不同的,“A”表示一个字符串。
Unicode编码被设计用来处理各种语言的所有文字,它占2个字节,可允许有65536个字符。
Unicode具有从0到65535之间的编码,他们通常用从’u0000’到’uFFFF’之间的十六进制值来表示(前缀为 u表示Unicode)
-
转义字符
- \b:退格
- \n:换行
- \r:回车
- \t:制表符(tab)
-
String类,其实是字符序列(char sequence)。
//代码1
String sa=new String("Hello world");
String sb=new String("Hello world");
System.out.println(sa==sb); // false
//代码2
String sc="Hello world";
String sd="Hello world";
System.out.println(sc==sd); // true
- 引用数据类型 比较 地址值,基本数据类型 比较 数值。
> - JVM为了提升性能和减少内存开销,避免字符串的重复创建,维护了一块特殊的内存空间——字符串实例池。
先看代码二中 例String str = "test";
以这种方式赋值时,JVM会先从字符串实例池中查询是否存在"test"这个对象,
String sc="Hello world";字符串实例池中没有"Hello World"对象。
如果不存在,则会在实例池中创建"test"对象,并把该对象的地址返回给str。
不存在"Hello World"对象,因此该行代码会在实例池中创建"Hello World"对象,并把该对象的地址返回给sc。
如果存在,直接把实例池中"test"的地址返回给str。
String sd="Hello world";
此时字符串实例池中存在"Hello World"对象,直接把实例池中"Hello World"的地址返回给sd。
因而,此时sc与sd地址指向实例池中同一对象(地址)(引用数据类型String 比较 地址值),sc==sd成立。
而在代码一中 例String str =new String("test");
以这种方式赋值时,JVM会先从字符串实例池中查询是否存在"test"这个对象,
String sa=new String("Hello world");字符串实例池中没有"Hello World"对象。
若不存在则会在实例池中创建"test"对象,同时在堆中创建"test"这个对象,然后将堆中的这个对象的地址返回赋给引用str。
不存在"Hello World"对象,因此该行代码会在实例池中创建"Hello World"对象,同时在堆中创建"Hello World"这个对象,然后将堆中的这个对象的地址返回赋给引用sa。
若实例池存在则直接在堆中创建"test"这个对象,然后将堆中的这个对象的地址返回赋给引用str。
String sb=new String("Hello world");
此时字符串实例池中存在"Hello World"对象,直接在堆中创建"Hello world"这个对象,然后将堆中的这个对象的地址返回赋给引用sd。
此对象为sb在堆中新建的第二个"Hello world"对象,与sa在堆中创建的对象不同。
因而,此时sa与sb地址指向堆中不同对象(地址)(引用数据类型String 比较 地址值),sa==sb不成立。
-
详细请见 String与new String()的区别
布尔类型拓展
boolean类型占一位(bit),有两个值,true和false,
不可以 0 或非 0 的整数替代 true 和 false ,这点和C语言不同。
类型转换
- 自动类型转换:低-->高
- 强制类型转换:高-->低
不同类型的数据进行混合运算时,先转化为同一类型,然后进行运算。
运算时,从低级到高级自动类型转换。
低 ------------------------------------> 高
byte,short,char—> int —> long—> float —> double
【注】转换过程中可能导致溢出或损失精度,例如:
int i =128;
byte b = (byte)i;
因为 byte 类型是 8 位,最大值为127,所以当 int 强制转换为 byte 类型时,值 128 时候就会导致溢出。
【注】浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入,例如:
(int)23.7 == 23;
(int)-45.89f == -45
【扩展】数字之间可以用下划线分割,例:
int num = 100_0000_0000;
System.out.println(num); //1000000000