为什么会有这样的结果?
2024-06-22 03:15:10
Java很神秘,有一层纸没有被捅破的话真的有很多东西貌似是解释不通,仔细探究之后就真相大白了。
这里收集几个典型的案例。
(1)字符串的那些事
public class StringTest {/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubString a1 = "a"+1;String b1 = "a1";String c1 = new String("a1");String d1 = "a";String i1 = "1";String x1 = d1+i1;System.out.println(a1=="a" + "1");System.out.println(a1=="a" + i1);System.out.println(a1==x1);System.out.println(a1==(d1+i1));System.out.println(a1==b1);System.out.println(a1==c1);System.out.println(a1==(d1+1));System.out.println(c1==(d1+1));System.out.println(a1==(d1+"1"));System.out.println(b1==(d1+"1").intern());}
}
执行结果:
true
false
false
false
true
false
false
false
false
true
(2)类加载与实例初始化
public class Parent {static {pA = 2;System.out.println("Parent static .");}static int pA = 1;{p = 2;System.out.println("Parent block .");}int p = 1;public Parent() {System.out.println("Parent .");}
}
public class Sub extends Parent {static {pB = 2;System.out.println("Sub static .");}static int pB = 1;private int b = pB;{b = 20;System.out.println("Sub block 1.");}public Sub() {System.out.println("Sub .");}{b = 10;System.out.println("Sub block 2.");}/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.println(new Sub().b);System.out.println("-----1 finish---------------");System.out.println(new Parent().p);System.out.println("-----2 finish---------------");System.out.println(new Parent().pA);}
}
执行结果:
Parent static .
Sub static .
Parent block .
Parent .
Sub block 1.
Sub block 2.
Sub .
10
-----1 finish---------------
Parent block .
Parent .
1
-----2 finish---------------
Parent block .
Parent .
1
(3)类型转换
public static void main(String[] args) {// TODO Auto-generated method stubint x=1;System.out.println((x>1)?1.1:1);}
执行结果:
1.0
(4)类加载
public class ClassLoadTest {private int[] args = new int[this.size];private int size =2;/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubClassLoadTest ct = new ClassLoadTest();System.out.println(ct.args.length);}
}
执行结果:
0
(5)基本类型转换
float f = 1.2;
double d = 2.3d;
double d1=2.3D;
double d2=2.3E10;
int i = 0xFF;
int i1=025;
Integer iObj =1;
byte b =128;
char c=17c;
byte b =1;b=b+1;
byte b =1;b+=1;
错误的表达式:
float f = 1.2;
byte b=128
char c=17c;
byte b=1;b=b+1;
(6)switch的条件判定
public static void main(String[] args) {int i=1;switch (i) {case 1:System.out.println("1");case 2:System.out.println("2");break;case 3:System.out.println("3");default:System.out.println("default");}}
输出结果:
1
2
最新文章
- [RHEL5企业级Linux服务攻略]--第6季 Vsftpd服务全攻略之高级配置
- java线程方法_Java线程的三种方式
- 2.3.1 为超参数选择合适的范围
- Linux IP 配置
- excel vba编程代码大全_实战VBA代码一键提取EXCEL中的所有公式!
- JS JAVASCRIPT 判断两个日期相隔多少天
- python copy与deepcopy (拷贝与深拷贝)
- 使用jpa控制器层如何编写_用错误的方式编写Kubernetes控制器仍然有用
- Google地球查看香港地形
- 消息服务器mq集群出现假死,排查tomcat项目假死原因的简单方法
- 携程android app插件化
- C++ eof()函数相关应用技巧分享
- 信号处理:频域转时域
- windows系统C盘扩容详解
- 快进来看程序员风格的修真小说!
- CH37X 文件管理芯片使用及移植指南
- 点击按钮打开新页面(携带参数)
- 互联网日报 | 苹果10月14日再开发布会;消息称B站明年赴港二次上市;我国电子社保卡申领超2亿张...
- HDU 2209 C - 翻纸牌游戏
- 关于tomcat能收到请求,但总是返回404的问题