javaSE面试题一,变量,操作符

时间:2022-01-26 21:03:02

1.java为什么是跨平台语言?
因为java执行的是.class文件,java.exe加载到虚拟机中执行,针对不同的平台(操作系统),sun公司提供了针对不同平台的JVM, JVM屏蔽底层硬件还有操作系统大差异。

2,
byte b1=3,b2=4,b;
b=b1+b2;
b=3+4;
哪句是编译失败的呢?为什么呢?

b=b1+b2;编译失败。原因:类型不匹配:不能从int转换为byte。因为b1,b2是变量,不确定它的值,所以默认使用int型进行存储。

3,
byte b = 130;有没有问题?如果我想让赋值正确,可以怎么做?结果是多少呢?
练习:byte b = 300;

byte b=130;
有问题,类型不匹配,不能从int转换为byte。byte类型的数据表示范围为-128~127,超出范围,130为整型数据。
强制类型转换:byte b=(byte)(130);结果b=-126;因为将表示范围看成一个环,127之后从-128开始第三个就是-126. (130-127)-1+(-128)=-126
byte b=300;
同上,类型不匹配,不能从int转换为byte,300为整型表示的数据范围。
强制类型转换,byte b=(byte)(300);将300转换为byte表示的范围,300-256=44;b=44;

public class J_01 
{ 

      public static void main(String[] args)
      {
        int a = 10;   
        int b = 10;
        int c = 10;


        a = b++;//a=10,b=11;
        c = --a;//a=9,c=9;
        b = ++a;//a=a+1=10,b=a=10;
        a = c--;//a=c=9,c=c-1=8;
        //a=9,b=10,c=8;
        System.out.println("a="+a+";b="+b+";c="+c);


        int x = 4;
        int y = (x++)+(++x)+(x*10);//解答:y=4+5+50=59;此时x经过++x之后变为有4变为5,然后‘;’结束之后x++生效:x=x+1=6;
        System.out.println("x="+x+";y="+y);//结果输出后自我更正:y=4+6+60=70;原因:(x++)括号完毕之后x=x+1=5;(++x)后:x=6;
        /* * 优质解答: * a=x++ b=++x y=a+b+(x*10) a=4 x=5 x=6 b=6 y=4+6+(6*10)=70 */

        boolean d=false;
        int k=9,m=3;
        if(d=true)
        {
            System.out.println("d=true");//d=true
        }
        if(k<10)
        {
            System.out.println("k<10");//k<10
        }
        if(m<4)
        {
            System.out.println("m<4");//m<4
        }
        else if(m<=5)
        {
            System.out.println("m<=5");
        }
        else
        {
            System.out.println("k>=10");
        }

      }
}
int i = 4;
        switch (i) {
        default:
        System.out.println("default");
        case 0:
        System.out.println("zero");
        break;
        case 1:
        System.out.println("one");
        case 2:
        System.out.println("two");

        }
        //default zero

        //&
        int x = 1,y = 1;                
        if(x++==2 & ++y==2) 
        {
            x =7;
        }
        System.out.println("x="+x+",y="+y);

        //x=2,y=2

        //&&
        int output=10;   
        boolean b1 = false;   
        if((b1==true) && ((output+=10)==20)){   
        System.out.println("We are equal "+output);   
        }else{   
        System.out.println("Not equal! "+output);  
        } 
        //not equal!10

        boolean b = true;
        if(b=false)                                 
            System.out.println("a");
        else if(b)
            System.out.println("b");
        else if(!b)
            System.out.println("c");
        else
            System.out.println("d");
        //c

        int j=1;   
        do{
            System.out.println(j);
            }while(++j<3);
        //1 2
    /** * if(b=false)将b赋值为false,if中为false所以不会执行if后的语句 */