小言_互联网的博客

【java基础】java基础题,你能答对6个算我输

296人阅读  评论(0)

前言

不论你是职场新人还是步入职场N年的职场新人大哥大当然这个N<3,我能担保你答不对9个题不要问我为什么这么自信,这些个题还是“有水平”的javase的基础题,传闻小白指定鸭蛋分,一测一个准,哈哈。

作为将来要成为架构师的男人,对,你没看错,就是在说你 皮一下很开森 ,what?你是小白?我顶你个肺,我叫声杠精,你敢应吗,那个代号9527的杠精,说你呢快快来答题,看你能答对几道题。

题一

下面的程序有问题吗?如果有问题说明一下, 如果没有问题猜测一下运行结果

public static void main(String[] args){ 
	short s = 1;
	 s=s+1; 
	System.out.println(s); 
} 

ps : 各位兄嘚都是大孩子了,各位都把自己的结果记在个小本本上再看下面的分析答案~

分析: s = s + 1 计算结果被提升为int类型,再向short类型赋值时发生错误,因为不能将取值范围 大的类型赋值到取值范围小的类型。

题二

下面的程序有问题吗?如果有问题说明一下, 如果没有问题猜测一下运行结果

public static void main(String[] args){ 
	short s = 1;
	 s+=1; 
	System.out.println(s); 
} 

ps : 各位兄嘚都是大孩子了,各位都把自己的结果记在个小本本上再看下面的分析答案~

分析: s += 1 逻辑上看作是 s = s + 1 计算结果被提升为int类型,再向short类型赋值时发生错误,因为不能将取值范围 大的类型赋值到取值范围小的类型。但是, s=s+1进行两次运算 , += 是一个运算符,只运算一次,并带有强制转换的特点, 也就是说 s += 1 就是 s = (short)(s + 1) ,因此程序没有问题编译通过,运行结果是2.

到这里,两个都错了的自觉点给楼主文章右上角点个赞,鸭!恭喜获得第N+1个准确无疑的天真小白荣誉勋章,千万别嫌弃,就像侠岚风语咒里说的:只要心怀正义,侠岚无处不在!所以我只想表达的是,天真小白荣誉勋章也是勋章。hhhhhh, 哎哎哎,别打…别打…别打脸.

题三

下面的程序有问题吗?如果有问题说明一下, 如果没有问题猜测一下运行结果

public static void main(String[] args){ 
		byte b1=1; 
		byte b2=2; 
		byte b3=1 + 2; 
		byte b4=b2 + b3; 
		System.out.println(b3); 
		System.out.println(b4); 
}

ps : 各位兄嘚都是大孩子了,各位都把自己的结果记在个小本本上再看下面的分析答案~

分析: b3 = 1 + 2 , 1 和 2 是常量,为固定不变的数据,在编译的时候(编译器javac),已经确定了 1+2 的结果并没 有超过byte类型的取值范围,可以赋值给变量 b3 ,因此 b3=1 + 2 是正确的。 反之, b4 = b2 + b3 , b2 和 b3 是变量,变量的值是可能变化的,在编译的时候,编译器javac不确定b2+b3的结果是什 么,因此会将结果以int类型进行处理,所以int类型不能赋值给byte类型,因此编译失败。

题四

下面的程序有问题吗?如果有问题说明一下, 如果没有问题猜测一下运行结果

public static void main(String[] args){ 
	  short s = 32767;
      s = (short)(s + 10);

      System.out.println(s); 
}

ps : 各位兄嘚都是大孩子了,各位都把自己的结果记在个小本本上再看下面的分析答案~

分析:定义s为short范围内最大值 (2^15) - 1 = 32767,运算后,强制转换(int换为short),砍掉2个字节后会出现不确定的结果,因为这个值以及超出了short类型数据的范围,从而变成负数结果-32759

到这里,三个都错了的自觉点给楼主文章右上角点个赞,还有小白同学千万别灰心,想当年楼主刚学java的时候,在腾讯课堂听课直播的是时候,那个老师出的就是这些类型题,我一直答错,那个老师提了楼主我好几次:这位小白同学又是你,你又答错了…不提了,往事不堪回首。所以,小白同学千万别灰心哦~

题五

下面的程序有问题吗?如果有问题说明一下, 如果没有问题猜测一下运行结果

 public static void main(String[] args) {
      
     int a=0;
     for (int i = 0; i >= a && i<100 ; i++){
         a+=i;
     }
        System.out.println(a);
    }

ps : 各位兄嘚都是大孩子了,各位都把自己的结果记在个小本本上再看下面的分析答案~

分析:这个稍微没有任何细节以及“套路”,只是单纯的掺杂着些逻辑,所以段个点debug吧,感受一下吧,结果是6

题六

下面的程序有问题吗?如果有问题说明一下, 如果没有问题猜测一下运行结果

 public static void main(String[] args) {
      
        int  x=4;
        System.out.println("value  is  " + ((x>4) ? 99.9 : 9));

    }

分析:这个题我估计99%的会错 包括我自己 ,如果我没猜错的话你的结果是9,啥?你的结果是99.9,额这个,如果这位同学你不是杠精那我建议你回家种田吧,我和你一起,你锄地我耕田…呃呃呃那结果是什么呢,结果居然是9.0 。。。至于原因我还是不断定的哈哈没有仔细去专研过,如果必须要个结果我估计java把9这个整数默认当成浮点类型数据,我当然只是推论,那么知道的大佬就请评论出来吧。

题七

下面的程序有问题吗?如果有问题说明一下, 如果没有问题猜测一下运行结果

 public static void main(String[] args) {
 //对于下面两句代码是否编译出错,很基础的哦
	      double d=3.10;
	      float f=3.10; 
//对于下面两句代码是否编译出错,以及打印结果是多少
        float a = 12345678.90123456789f;
        double b=0.12345678901234567890;
        float c=0.12345678901234567890f;
     
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);

    }

ps : 各位兄嘚都是大孩子了,各位都把自己的结果记在个小本本上再看下面的分析答案~

分析:3.10是浮点型,浮点型字面值默认当做double类型来处理,直接编译通过;如果是float类型则必须加 F或者f,若没加,直接编译不通过,会报错“损失精度”,至于解决方法也很简单, 第一种方式:强制类型转换float f1=(float)3.10; 第二种方式:没有类型转换直接加F或者f如 folat f2=3.10f ;对于abc的打印结果a = 1.2345679E7b = 0.12345678901234568c = 0.12345679

如果还不懂java浮点类型float以及double,可以参考这篇文章

什么是浮点型?什么是单精度浮点数(float)以及双精度浮点数(double)?

题八

分析下列程序代码,猜想下输出结果。

 public static void main(String[] args) { 
	 int a = 1; int b = 2; 
	 System.out.println(a); 
	 System.out.println(b); 
	 change(a, b); 
	 System.out.println(a); 
	 System.out.println(b); 
	 }
	 public static void change(int a, int b) { 
	 a = a + b; b = b + a; 
 } 

分析下列程序代码,猜想下输出结果。

public static void main(String[] args) { 
	int[] arr = {1,3,5}; 
	System.out.println(arr[0]); 
	change(arr); 
	System.out.println(arr[0]); 
}
	
	public static void change(int[] arr) {
	arr[0] = 200; 
   }

这个题就不分析了,主要是考察数组的,答错的童靴可能对数组了解的不是特别清析,可以参考这篇文章 java数组定义、使用、以及数组内存分析详解

题九

运行结果是怎样的呢?

  public static void main(String[] args) {
       
        int i = 1, j = ++i;
        System.out.println(i);
        System.out.println(j);
    }

分析:估计各位会觉得i=1,j=2,噗哈哈,你还太单纯了,啥?你的答案是i=1,j=1?回家种田吧兄嘚我陪你。那么结果是什么呢?i=2,j=2,原因也很简单,i其实是个变量,j也是个变量,之前i值是1,之后j经历了++i,就这个经历的同时,i已经自增++了,所以也是2.

到这里,六个全错了的自觉点给楼主文章右上角点个赞,千万别灰心,就像侠岚风语咒里说的:只要心怀正义,侠岚无处不在!所以还要继续加油哇!向架构师道路冲鸭!!!

有木有全部正确的大哥大捏,如果有,我代表全体鸭蛋分的小白膜拜下大佬~

最后,已每题一分计算,你得多少分?勇敢说出来,尽管笑死楼主


转载:https://blog.csdn.net/qq_44543508/article/details/102074350
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场