java开发容易出错的地方,java基础中容易出错的地方

一、

byte a=1;

byte b=2;

byte c=a+b;   //编译错误,因为short,char,byte运算时是转换为int在计算的。

// 换成 int c=a+b;正确

二、

char x='a';

char x1='b';

char x3=(char)(x+x1);

System.out.println(x3);      //输出编码“?”   ,char类型输出编码,int类型输出数字。

//换成int,输出数字。int x3=x+x1;

~~~~~~~~~~~~~分割线~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

char x=12;

char x1=36;

char x3=(char)(x+x1);            //输出编码“0”

System.out.println(x3);          //换成int, int x3=(x+x1);  输出数字48.

三、

int a =Integer.MAX_VALUE;

int b=a+1;

System.out.println(b);              //会溢出,但不会报错,输出int的最小值。

四、

int x=Integer.MAX_VALUE;

long y=x+1;                    //x是int形,1是int形

System.out.println(y);         //结果溢出

~~~~~~~~~~~~~~~分割线~~~~~~~~~~~~~~~~~~

long y1=(long)x+1;             //结果正确

System.out.println(y1);

五、

char a='A';

char b='d'+'A';

char b1='d'+65;

char c='d'+a;      //报错,换成int就对了

六、

int x=1;

System.out.println(x++);  //输出1。s

x++在后:先取值,在计算。在执行println()方法时先取到x=1,等方法执行结束,在执行x=x+1的操作。

~~~~~~~~~~~~~~~分割线~~~~~~~~~~~~~~~~~~

int x=1;

System.out.println(++x);  //输出2

x++在前:先计算,在取值。

~~~~~~~~~~~~~~~分割线~~~~~~~~~~~~~~~~~~

int x=2;

System.out.println(x++%3);  //输出2

七、

int a=1;

a=a++;         //先取a的值赋值给a++,然后a自增1为2。

//然后再把a++的值赋给a。

//最后a=1。

八、

double a=4.9999999999;                                //double类型判断和一个数是否相等,用<       /       >

boolean t=Math.abs(a-5)<0.000000001;

System.out.println(t);

九、

char a='A';

char b='d'+'A';

char b1='d'+65;

char b2='d'+a;     //报错,换成int就对了。

十、

Cell c=new CELL();       堆中:CELL,  栈中;c(地址).....指针指向cell堆

//C=null    //地址就没有了,指针也没了。堆里面的就被自动回收

~~~~~~~~~~~~~~~~~~~~~~~~~~~

Cell c=new CELL();

Cell cc=c;              //把c的地址和指针给CC,所以哪怕C为没地址和指针,Cell也不会被回收

C=null

~~~~~~~~~~~~~~~~~~~~~~~~~~~~

十一、

class Fu{

void show(){}

double show(){

return 0.0;

}

}

class Zi{

int show(){}              //编程错误,父类是void和基本类型,那么子类必须和它相等

int show(){               //编程错误,父类是void和基本类型,那么子类必须和它相等

return 0;

}                //编程错误,父类是void和基本类型,那么子类必须和它相等

}

******重载看引用,重写看引用类型****

Fu o=new Zi();

//Fu为引用,    Zi为对象。

十一、

int x=5;

x+=5.5;     //x=(int)(x+5.5);

System.out.println(x);//輸出10

十二、

package api.onlyTest;

import java.io.UnsupportedEncodingException;

import java.net.URLEncoder;

public class Demo1 {

public static void main(String[] args){

int a=5;

int c=new Integer(5);

Integer c1=new Integer(5);

Integer c2=c1;

Integer c3=new Integer(5);

Integer c6=5;

Integer c4=c3;

System.out.println(a==c); //t

System.out.println(a==c1);//t

System.out.println(c==c1);//t

//在计算a是基本类型,c是引用类型

//在计算a==c时候,会把c拆箱成基本类型

//所以a==c为true

System.out.println(c==c3);//t

System.out.println(c1==c3);//f

//new出来的c1和c3在内存的不同位置,

//双等于比较的是地址,所以c1==c3为false

System.out.println(c2==c3);//f

System.out.println(c4==c2);//f

System.out.println(c6==c3);//f

}

}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值