Java中易错的一些小知识点

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);
}*/
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值