总目标:学会JAVA
本周目标:Java的入门知识(6.5——6.12)
今日目标:
1. Java基础语法学习(2)
2. Java面试中数据类型的知识及思考(6.9)
整数扩展
进制
-
二进制:0b
-
十进制
-
八进制:0
-
十六进制:0x
//以10来举例 public class Demo04 { public static void main(String[] args){ //整数拓展: 进制 二进制0b 十进制 八进制0 十六进制0x int i = 0b10;//二进制的10 int i1 = 10; //十进制的10 int i2 = 010;//八进制的10:0 int i3 =0x10;//十六进制的10:0x 0~9 A~F 16 System.out.println(i); System.out.println(i1); System.out.println(i2); System.out.println(i3); System.out.println("==========================================");
运行结果分别是2 10 8 16
浮点数拓展
思考问题银行业务是否可以用浮点型来表示?
要使用BigDecimal数学工具类
为什么?
//为什么不相等?
float f = 0.1f;//f=0.1
double d = 1.0/10;//d=0.1
//返回为false
System.out.println(d==f);//==是布尔型判断是否相等
System.out.println(d);
System.out.println(f);
//输出结果false 0.1 0.1
//为什么相等?
float d1 = 23121312121212312f;
float d2 = d1+1;
System.out.println(d1==d2);//为什么+1后还相等
//输出结果为true
System.out.println("==========================================");
原因是转换过程中可能导致溢出或损失精度
-
float,double;有限 离散 舍入误差 大约 接近但不等于;
-
最好完全避免使用浮点数进行比较
-
最好完全避免使用浮点数进行比较
-
最好完全避免使用浮点数进行比较
自动类型转换
整型、实型(常量)、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算。
转换从低级到高级。
低 ------------------------------------> 高
byte,short,char—> int —> long—> float —> double
数据类型转换必须满足如下规则:
-
不能对boolean类型进行类型转换。
-
不能把对象类型转换成不相关类的对象。
-
在把容量大的类型转换为容量小的类型时必须使用强制类型转换。
-
转换过程中可能导致溢出或损失精度,例如:
int i =128;
byte b = (byte)i;
因为 byte 类型是 8 位,最大值为127,所以当 int 强制转换为 byte 类型时,值 128 时候就会导致溢出。
- 浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入,例如:
(int)23.7 == 23;
(int)-45.89f == -45
字符与字符串
- 字符char:
- char 类型是一个单一的 16 位 Unicode 字符;
- 最小值是 \u0000(十进制等效值为 0);
- 最大值是 \uffff(即为 65535);
- char 数据类型可以储存任何字符;
- 例子:char letter = ‘A’;。
结论:所有的字符本质还是数字
编码 Unicode 2字节 最大值65536 原始版Excel 最大行列为 2 16 = 65536
char c3 = '\u0061';
System.out.println(c3);//输出a
//转义字符
// \t 制表符
// \n 换行
System.out.println("Hello\tWorld");//输出Hello World \t相当于TAB键
System.out.println("==========================================");
常用的转义符
符号 | 字符含义 |
---|---|
\n | 换行 (0x0a) |
\r | 回车 (0x0d) |
\f | 换页符(0x0c) |
\b | 退格 (0x08) |
\0 | 空字符 (0x0) |
\s | 空格 (0x20) |
\t | 制表符 |
" | 双引号 |
’ | 单引号 |
\ | 反斜杠 |
\ddd | 八进制字符 (ddd) |
\uxxxx | 16进制Unicode字符 (xxxx) |
- 字符串
String sa = new String("hello World");
String sb = new String("hello World");
System.out.println(sa==sb);
String sc = "hello world";
String sd = "hello world";
System.out.println(sc==sd);
System.out.println("==========================================");
输出结果
false
true
为什么同样都是字符串hello world ,第一组不相同,第二组相同;要从对象 内存分析
布尔值扩展
boolean:
- boolean数据类型表示一位的信息;
- 只有两个取值:true 和 false;
- 这种类型只作为一种标志来记录 true/false 情况;
- 默认值是 false;
- 例子:boolean one = true。
boolean flag = true;
//相当于if(flag==true) less is more
if (flag){
System.out.println("Less is more!");
学习总结
学习了解数据类型中整数型、浮点型、字符型、布尔型的特性,在使用中的注意点。
整数型与浮点型转换过程中精度损失和内存溢出问题,注意在使用中选择合适的数据类型,浮点型尽量避免使用float型,最好完全避免使用浮点数进行比较。注意整数型数字进制的表示,和使用位置。注意字符赋值符号**’** 字符**’**, 字符串赋值符号 " 字符串 ",转义符== \ ==的方向。布尔值未赋值时是默认值fals。