进制的表示方法_浮点数的比较_字符char的强制转换以及Unicode编码相关_部分转义字符的说明_new关键字创建的对象以及基本数据的比较_布尔值的使用场景

进制的表示方法

public class Demo{
    public static void main(String[] args){
        //整数扩展   进制   二进制0b   十进制   八进制0    十六进制0X
        int i = 10;
        int i2 = 010;
        int i3 = 0x10;
        System.out.println("i = " + i);//输出为 i = 10
        System.out.println("i2 = " + i2);//输出为 i2 = 8
        System.out.println("i3 = " + i3);//输出为 i3 = 16
    }
}

浮点数的比较

public class Demo{
    public static void main(String[] args){
        float f = 50.1f;
        double D = 50.1;
        System.out.println("f = " + f);//输出为 f = 50.1
        System.out.println("D = " + D);//输出为 D = 50.1
        System.out.println("f == D = " + (f == D));//输出为 f == D = false
        float f2 = 314512544;
        float f3 = f2 + 1;
        System.out.println("f2 = " + f2);//输出为 f2 = 3.14512544E8
        System.out.println("f3 = " + f3);//输出为 f3 = 3.14512544E8
        System.out.println("f2 == f3 : " + (f2 == f3));//输出为 f2 == f3 : true
    }
}

总结:

float浮点数类型表现的字长是有限的,浮点数有舍入误差

舍入误差来源于四舍五入,很多数字没有办法能精确的表示,结果个只能是个大约数,他只是接近,但不等于

float数并不精确,最好完全使用浮点数进行比较少用浮点数进行比较,如果实在需要比较使用BigDecimal(数学工具类)

解决方式:

BigDecimal 数学工具类

字符char的强制转换以及Unicode编码相关

public class Demo{
    public static void main(String[] args){
   		char c1 = 'a';
        char c1 = 'a';
        char c2 = '中';
        System.out.println("c1 = " + c1);
        System.out.println("强制转换c1: " + ((int)c1));
        System.out.println("c2 = " + c2);
        System.out.println("强制转换c2: " + ((int)c2));
        char c3 = '\u0061';
        System.out.println("c3 = " + c3);//输出为 c3 = a
    }
}

总结:

所以字符本质还是数字,char出现之始就是为了使用Unicode编码而创造的**(可以理解为占据的两个字节对应了x,y坐标轴 !!!个人理解,因为没百度到本质所以做出了猜想)**

最早的Excel表格只有2的16次方(65536)的长度,Unicode编码就是制作了这样的一个表格,将对应位置放上对应内容,在需要使用的时候使用Unicode提供的编码在前面加上\**(转义符号)**来转换成对应的字符从u0000开始到uffff结束编码内都放置了相应的内容

部分转义字符的说明

\t 制表符 输出制表符,实现对齐功能

String str1 = "Hello\tworld!";
String str2 = "Helllo\tword!";
System.out.println("str1 = " + str1);
/*
输出为
	str1 = Hello	world!
	str2 = Helllo	word!
*/

\n 换行符 输出换行符,实现换行,在无法使用回车换行的文本中使用

String str3 = "Helllo\nword!";
System.out.println("str3 = " + str3);
/*
输出为
	str3 = Helllo
	word!
*/

\r 回车 回车和换行符不同,控制台中出现回车会将输出光标移动至该行最前方重新开始输出

String str4 = "Hello\rWorld!";
System.out.println("str4 = " + str4);
/*
输出为
	World!
*/
//本来我以为从头开始会把\n之前的内容也输出,也就是输出:Hello World! ,实际输出是跳过了之前的内容只输出了World!

代码里特殊符号都有他的用途,但你又实在想输出一个只显示该符号不使用其特殊用途的符号,可以在前面加上一个 \ ,想输出一个 \ 符号,可以在 \ 前面再加一个 \ ,例 : \\ ( 实际上在MD里输入我在这个地方输入了四个\ )

new关键字创建的对象以及基本数据的比较

String sa = new String("Hello World!");
String sk = new String("Hello World!");
System.out.println("sa == sk : " + (sa == sk));//输出为 false

String sc = "Hello World!";
String sd = "Hello World!";
System.out.println("sc == sd : " + (sc == sd));//输出为 true

凡是用new关键字创建的内容都是对象,会开辟新内存在存储数据

sa和sk做比较返回的是之所以为false是因为他们创建的是两个不同的对象**(初学者把这里的对象直接理解成 东西 就行,这就是俩不同的东西)**,虽然存储的数据一样,但是存储的位置不同,这里默认比较的是存储的位置,所以会返回false.

sc和sd作比较返回的之所以是true是因为他们都是基本数据,比较的时候也是默认直接对比的他们储存的数据,而不是比较的储存地址,所以返回的是true.

布尔值的使用场景

boolean flag = true;
if(flag == true){}//新手操作
if(flag){}//老司机行为
//Less is More代码要精简易读
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值