java里String需要注意的地方以及基本数据类型注意点(不定期修改更新)

本文深入探讨了Java中字符串的存储方式、常量池与堆内存的区别,并详细解析了不同类型变量之间的比较机制,包括基本数据类型与包装类实例间的比较。
String s0="java";
String s1="ja";
String s2=s1+"va";
String s3="ja"+"va";
String s4=new String("java");
System.out.println(s0==s2);
System.out.println(s0==s3);
System.out.println(s0==s4);
System.out.println(s2==s4);
int i0=11;
Integer i1=new Integer(11);
System.out.println(i0==i1);
char c='a';
Integer i2=new Integer(97);
System.out.println(c==97);
System.out.println(c==i2);

结果:
false
true
false
false
true
true
true


System.out.println(s0==s2); false  
System.out.println(s0==s3); true
System.out.println(s0==s4); false
System.out.println(s2==s4); false
常量池:s0,s1,s3
堆内存:s2,s4
s0和s3指向String缓冲区里同一个对象,所以true
s0比较s2和s4还需要比较地址,所以false——只有八种基本类型和对应的类比较,才会解封装比较,比如下面的int两个值比较就是true
s2和s4地址不同,肯定false


System.out.println(i0==i1); true
八种基本数据类型比较时,会解封装


System.out.println(c==97); true
System.out.println(c==i2); true
char类型底层是通过 UnicodeData 文件中的信息定义的,当int和char两者存在比较的时候,会转变成同种类型比较,不同方法,转变的类型不同。
System.out.println(4>5?'c':97); 
结果是'a'
三目运算的时候冒号左右会先进行比较,所以97变成了a,  int转变成char类型比较


public static void main(String[] args) {
charr('c');
charr(97);
}

public static void charr(char a){
System.out.println(a);
}
public static void charr(int a){
System.out.println(a);
}
上面是没有异常的

***********
public static void main(String[] args) {
charr('c');
charr(97);
}

public static void charr(int a){
System.out.println(a);
}

结果是:
99
97
运行也是可以的

***********
public static void main(String[] args) {
charr('c');
charr(97);
}

public static void charr(char a){
但这样就会报错,97需要强转
调用函数的时候char类型会变成int类型比较,但int不能找到匹配的调用函数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值