Java面试宝典-1

i++

package practice;
/**
 * 先运行static 初始块
 * 但是由于 int x=5;在代码块里属于局部变量运行完 x,y还是等于初始值0
 * 再运行main  x,y为static只有一份  
 * @author liu
 *
 */
public class Test6 {
   static {
    int	x=5;
   }
	 static int x,y;
	
     
      public static void main(String[] args) {
		x--;
		myMethod();
		System.out.println(x + y++ +x);
	}
      
      public static void myMethod(){
    	  y=x++ + ++x;
      }
	}



package practice;

public class Test7 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
     int j=0;
     for(int i=0;i<100;i++){
    	 j=j++;
    	//j=++j;//结果为100
     }
     System.out.println(j);//结果为0
     /**j++相当于
      *0 temp=j 0;
      *1 j=j+1  0+1;
      *0 j=temp 0;
      *因为Java用了中间缓存变量机制
      */
	}

}

package practice;
public class Test8 {
     public static void main(String[] args) {
		int a=5,b=3;
		if(!(a==b)&&(a==1+b++)){
			
		}
		System.err.println(a+","+b);//5,4
	}
  
}


package practice;

public class Test9 {
    public static void main(String[] args) {
		int i=0;
		i=i++ + ++i;
		System.out.println("i:"+i);
		int j=0;
		j=j++ + ++j +j++ +j++;
		System.out.println("j:"+j);//0+2+2+3=7
		int k=0;
		k=k++ +k++ +k++ + ++k;
		System.out.println("k:"+k);//0+1+2+4;
		int h=0;
		h=++h + ++h;
		System.out.println("h:"+h);//1+2;
		int q1=0,q2=0 ;
		int p1 = 0,p2=0;
		q1=++p1;
		q2=p2++;
		System.out.println("q1:"+q1);//1
		System.out.println("q2:"+q2);//0
		System.out.println("p1:"+p1);//1
		System.out.println("p2:"+p2);//1
	}
}

j:7
k:7
h:3
q1:1
q2:0
p1:1
p2:1

类型转换

package practice;

public class Test10 {
  public static void main(String[] args) {
	  //byte char short 同级别不能相互转换 可以强制转换
	  //低级向高级  会转换成对应的ASCLL码值
	char c='c';
	int i=c;
	System.out.println("output:"+i);
	short a=99; char b=(char)a;
	System.out.println("output:"+b);
	int d=99;byte e=(byte)i;char f=(char)d;//可能会导致精度下降
	System.out.println("output:"+e +" and " +f );
	
	float g=100.00f;
	Float F1 =new Float(g);
	Double d1=F1.doubleValue();
	System.out.println(d1);
	
	int j=034;
	int k=(int)056L;
	//int l=078;//一些编程语言中常常以数字0开始表明该数字是八进制
	int m=012;
	int n=101110;
	System.out.println(m);
	System.out.println(j);
	System.out.println(k);
	System.out.println(n);
	/**
	 * ;由于 += 是Java语言规定的运算符,java编译器会对
	 * 它进行特殊处理也就是自动进行强制类型转换,因此可以正确编译。
*/
	 
	short s=1;
	//s=s+1;出错
	s=(short) (s+1);
	short s2=1;
	s2+=1;
}
}

output:99
output:c
output:99 and c
100.0
10
28
46
101110


运算符


package practice;

public class Test11 {
    public static void main(String[] args) {
    	/**三目运算符
    	 * s=a?b:c
    	 */
		int i=42;
		String str =(i<40)?"life":(i>50)?"universe":"everything";
		System.out.println(str);
	//	boolean b=true?false:((true==true)?false:true);
		/**true==true?true:false;--》eclipse提示 dead code  参考博客
		 * :
		 * http://blog.csdn.net/nokia_lc/article/details/53739701
		 * 这段代码就不会被执行到
		 */
		boolean b=true?false:true==true?true:false;
		System.out.println(b);
		System.out.println("-------------------------------");
		int a=5;
		System.out.println("value is :"+((a<5)?10.9:9));
		System.out.println("value is :"+((a<5)?10:9));
		System.out.println("value is :"+((a==5)?10:9.3));
		//java根据运算符精度类型进行了自动类型转换
		
		char x='x';
		int d=10;
		System.out.println(false?d:x);
		System.out.println(false?10:x);
		
	}
}

everything
false
-------------------------------
value is :9.0
value is :9
value is :10.0
120
x


package practice;

public class Test12 {
	public static void main(String[] args) {
		int m = 5, n = 5;
		if ((m != 5) && (n++ == 5)) {
		}
		System.out.println("a." + n);
		n = m = 5;
		if ((m != 5) & (n++ == 6)) {
		}
		System.out.println("b." + n);
		n = m = 5;
		if ((m == 5) || (n++ == 5)) {
		}
		System.out.println("c." + n);
		n = m = 5;
		if ((m == 5) && (n++ == 6)) {
		}
		System.out.println("d." + n);
		n = m = 5;

		int a = 1, b = 2;
		int c = a & b;
		System.out.println("a&b" + c);
		/**
		 * &,| 非短路运算
		 *  &&,||短路运算 
		 *  位运算 
		 *  a的二进制 a 0 0 0 1 
		 *  b的二进制b 0 0 1 0 
		 *         a&b 0 0 0 0
		 * 
		 */
		//移位操作符右边的参数要进行模的32运算,并且移位是对二进制的操作
		//而二进制中8位是一个循环,所以,num>>32 等于num>>0,num>>33 等于num>>1
		int num =32;
		System.out.println(num>>32);//结果为32
		int num2 =33;
		System.out.println(num>>33);//结果为16
		
	}
}
异常:

http://blog.csdn.net/hguisu/article/details/6155636#



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值