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
	}
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值