Java基础
1.整数与浮点数
不同进制数在java中的表示
对不同进制的数都用int来声明,且初始化时不同进制前有不同的表示方法(在实际的数字之前):
-
二进制:0b
-
八进制:00
-
十进制:直接写数字
-
十六进制:0x
//整数拓展 进制类型 二进制0b 十进制 八进制0 十六进制0x int b=0b0010;//二进制数 表示2 int i=00010;//八进制数 表示8 int it=10;//十进制数 表示10 int is=0x0010;//十六进制数 表示16 System.out.println(b); System.out.println(i); System.out.println(it); System.out.println(is);
浮点数拓展
面试问题:在银行系统中如何表示钱?
答案:用数学工具类 BigDemical。
对于浮点数而言它的表示范围有限,并且float类型会造成误差不能用于精确的银行系统,一般并不能用浮点数进行比较,误差太大。
//浮点数中float表示范围有限并且会有舍入误差 少用浮点数进行比较
float f=0.1f;
double d=0.1;
//理论上两者是相等的
System.out.println(f==d);//判断语句
float f1=12321312323123123f;
float f2=f1+1;//理论上二者值不相等
System.out.println(f1==f2);
运行上述代码查看运行结果,机器运行出的答案和我们预期的恰好相反,这和float类型具有舍入误差和表示范围有限都有关系。
2.字符(串)类型拓展
字符与数字的关系
所有字符在本身意义上都是数字,在编码表Unicode中用2字节表示了2^16个字符,所以每一个字符都有其对应的数字编码。
char c1='A';
char c2='中';
System.out.println(c1);
System.out.println((int)c1);//强制类型转换
System.out.println(c2);
System.out.println((int)c2);
c1和c2都是char类型的但可以进行强制类型转换为int类型,当它进行输出时就是其对应的数字编码。
转义字符
转义字符由\和字母组成,在输出时代表了不同的含义。
//Unicode U000~UFFF
System.out.println("=========================================");
char c3='\u0061';//转义字符
System.out.println(c3);
System.out.println("=========================================");
//转义字符
//\t制表符(从中显示一个空格)
//\n换行符
System.out.println("base.Hello\tworld!");
System.out.println("base.Hello\nworld!");
字符串类型
对于字符串类型,可以直接进行创建,但也可以创建一个对象,二者所表达的含义不同。直接创建相同的字符串会指向同一个内存地址,而创建对象会从两个不同的内存地址中建立。详情可以参考:
String sa=new String("base.Hello");
String sb=new String("base.Hello");
System.out.println(sa);
System.out.println(sb);
System.out.println(sa==sb);
System.out.println("=========================================");
String fa=("base.Hello");
String fb=("base.Hello");
System.out.println(fa==fb);
第一个布尔值会输出false,第二个则为true。
3.布尔类型
对于布尔类型,只有true和false两种类型,在这里规范一种在条件判断语句中的写法(less is more):
//布尔值扩展
boolean flag=true;
if (flag)//等价于if(flag==true) less is more
{
System.out.println("base.Hello\tworld!");
}
学习来源:b站搜索“遇见狂神说”。