package com.zhao.test;
public class TestOne {
/*1题
* static{
int x=5;
System.out.println(x);
}
static int x,y;//x=0;y=0
public static void main(String args[]){
x–;
// x=-1
myMethod();
System.out.println(x+y+ ++x);
}
public static void myMethod(){
y=x++ + ++x;
//y=0
}*/
//=============================================
/*2题
* public static void main(String[] args) {
waitForSignal();
}
static void waitForSignal() {
Object obj = new Object();
synchronized (obj) {
try {
obj.wait();
System.out.println("trueone");
} catch (InterruptedException e) {
e.printStackTrace();
}
obj.notify();
System.out.println("truetwo");
}
}*/
//==================================================
/*3题
* public static void main(String[] args) {
Boolean flag=false;
if(flag=true){//没意义。就是把true赋值给flag之后就是一个true语句,所以会打印出来true。
System.out.println("true");
}else{
System.out.println("false");
}
}*/
//=====================================================
/*4题
* public static void main(String[] args) {
int i=0;
Integer j = new Integer(0);
System.out.println(i==j);//int类型与Integer进行比较,Integer会自动拆箱成Int类型再比较,所以为true。
System.out.println(j.equals(i));
}*/
//=====================================================
/*5题
* public static void main(String[] args) {
Integer i01 = 59;
int i02 = 59;
Integer i03 =Integer.valueOf(59);
Integer i04 = new Integer(59);
System.out.println(i01==i02);//Integer会自动拆箱成Int类型再比较。
System.out.println(i03==i04); //JVM中一个字节以下的整型数据会在JVM启动的时候加载进内存,
//除非用new Integer()显式的创建对象,否则都是同一个对象
//所有只有i04是一个新对象,其他都是同一个对象。
System.out.println(i01==i04);
System.out.println(i01==i03);
}*/
//==============================================
/*6题
* public static void main(String[] args) {
Integer var1=new Integer(1);
Integer var2=var1;
doSomething(var2);
/*
基本类型作为形式参数传递不会改变实际参数,引用类型作为形式参数传递会改变实际参数
,但是JDK1.5以后,对基本类型的包装类型(int-Integer,double-Double)
提供了自动拆装箱的功能,把Integer类型作为参数传递,会自动拆箱为基本类型,不会改变实际参数的值
*/
/*
System.out.print(var1.intValue());//打印出1
System.out.print(var1==var2);//打印出true这里的var2还是原来的 Integer var2=var1;
}
public static void doSomething(Integer integer){
integer=new Integer(2);
System.out.println(integer);//从这里就可以看出参数传递的本质
}
*/
//================================================
/*
* 7题
public static void main(String[] args) {
int Arry_a[] = new int[10]; //定义的数组长度为10,角标即为0-9
System.out.println(Arry_a[10]); //访问数组角标10会出现数组角标越界异常
}*/
// public static void main(String[] args) {
// String s=null;
if((s==null) | (s.length()==0)){
System.out.println(s);
}
// if( (s!=null) & (s.length()>0) ){
// System.out.println(s);
// }
// }
/* 逻辑运算符:
&&和|| 是按照“短路”方式求值的。如果第一个操作数已经能够确定表达式的值,第二个操作数就不必计算了
位移运算符:
&和| 运算符应用于布尔值,得到的结果也是布尔值,不按“短路”方式计算。
即在得到计算结果之前,一定要计算两个操作数的值。*/
//======================================================
/*
* 8题
static boolean foo(char c)
{
System.out.print(c);
return true;
}
public static void main( String[] argv )
{
int i = 0;
for ( foo(‘A’); foo(‘B’) && (i < 2); foo(‘C’))
{
i++ ;
foo(‘D’);
}
}*/
// for循环执行过程,先执行初始化foo(‘A’),在执行条件foo(‘B’),满足条件执行foo(‘D’),
//判定是否满足下次执行条件foo(‘C’);第二次初始化foo(‘A’)语句不会再执行
//=======================================================
/*9题
* public static void main(String[] args) {
short a = 128;
byte b = (byte) a;
System.out.println(a);
System.out.println(b);
}*/
}