在java中,它们的区别?

来源:互联网 发布:mac怎么创建加密文件夹 编辑:程序博客网 时间:2024/06/05 10:47

&与&&的区别:

  1)&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。

  2)&&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式,例如,对于if(str!=null&&!str.equals(“”))表达式,当str为null时,后面的表达式不会执行,所以不会出现NullPointerException如果将&&改为&,则会抛出NullPointerException异常。

  3)&还可以用作位运算符当&操作符两边的表达式不是boolean类型时,&表示按位与操作。

“==”和equals方法的区别:

int a=10; int b=10; 则a==b将是true。 但不好理解的地方是: String a=new String( "foo "); String b=new String( "foo "); 则a==b将返回false。 

对象变量其实是一个引用,它们的值是指向对象所在的内存地址,而不是对象本身。a和b都使用了new操作符,意味着将在内存中产生两个内容为 "foo "的字符串,既然是“两个”,它们自然位于不同的内存地址。a和b的值其实是两个不同的内存地址的值,所以使用 "== "操作符,结果会是false。诚然,a和b所指的对象,它们的内容都是 "foo ",应该是“相等”,但是==操作符并不涉及到对象内容的比较。 对象内容的比较,正是equals方法做的事。 看一下Object对象的equals方法是如何实现的: boolean equals(Object o){ return this==o; } Object对象默认使用了==操作符。所以如果你自创的类没有覆盖equals方法,那你的类使用equals和使用==会得到同样的结果。同样也可以看出,Object的equals方法没有达到equals方法应该达到的目标:比较两个对象内容是否相等。因为答案应该由类的创建者决定,所以Object把这个任务留给了类的创建者。

i++和++i的区别:

int a=6,b=7;
int s=(a++ + ++b)-(++a -4);
---->S=(6+7)-(7-4)

i++ 表示i的值作为表达式的值,然后i自加1.而 a = ++i,相当于 i=i+1; a = i; 
++i 表示i先自加1再作为表达式的值,而 a = i++,相当于 a = i; i=i+1; 
while 和do while的区别:
while(表达式){
循环体   
}
do{
}while(表达式)
在语句块中就可知道它们的区别:while是先会进行条件判断,当条件为ture的时候执行循环体,直到条件为FALSE跳出循环体
do..while是先会执行循环体,再去判断条件是否为True,要注意的是不管条件是否为True,do..while至少会执行一次循环体。
break和continue的区别:

程序进入循环体后在下次循环判断之前执行循环体里的所有语句,break和continue语句可以终止循环或忽略某些循环。

//打印三角形//for(int i=0;i<6;i++){//for(int s=0;s<i;s++){//////System.out.print("*");//continue;//程序会跳出本次循环,执行下次循环
//   }//////System.out.println("");
//break;//程序直接跳出循环,执行循环外的程序//}

break: 此语句导致程序终止包含它的循环,并进行程序的下一阶段(整个循环后面的语句),即,不是跳到下一个循环周期而是退出循环。如果break语句包含在嵌套循环里,它只跳出最里面的循环。

continue: 此语句导致程序去执行下一次循环。

switch和if的区别:

Scanner g=new Scanner(System.in);
//System.out.println("请输入你的成绩:");
//int number=g.nextInt();
//if(gread>=90){
//System.out.println("优秀");
//
//}else if(gread>=80){
//System.out.println("良好");
//}else if(gread>=60){
//System.out.println("及格");
//}
//else{
//System.out.println("差");
//
//}

switch (gread) {
//case 90:
//System.out.println("优秀");
//break;
//case 80:
//System.out.println("良好");
//break;
//default:
//System.out.print("差");
//}

个人觉得switch和if用法上和功能都是差不多,不过从这两块代码中可以看出想要以范围的形势去得到一个结果,最好是用if语句更好一些,因为case的只能是一个规定的格式(只能用int char String类型),当以一个值或者字符去得到一个结果是时,使用switch更简洁方便些。

0 0
原创粉丝点击