尚学堂百战程序员1573题---答案总结>>>第二章 数据类型和运算符

1.    常用的进制有哪些?

十进制、二进制、八进制、十六进制

2.    如何将10进制转换为2进制数据

除2取余,逆序排列

这个自然不用多说。本人日常口算习惯:32 16 8 4 21  比如55=32+16+4+2+1,则(11 0111)

3.    位、字节、字符的概念及其计数范围?

位:计算机存储信息的基本单位,代表一个二进制数位,

计数范围:0或1

字节:8个连续的二进制位为一个字节,可以存放1个西文字符的编码

      计数范围:-128~127

字符:单引号用来表示字符常量,例如 ‘A’,‘张’

      计算范围:0-65535之间的编码

4.    标识符的作用是什么?

java标识是用来给类、对象、方法、变量、接口和自定义数据类型命名的

5.    这个标识符合法吗?  int  aaa@bbb = 33;

不合法

1>标识符由大小写字母, 下划线, 数字, $符号组成.

2>开头可以是大小写字母, 下划线,和$符号.(数字不能开头)

3>标识符长度没有限制

4>标识符不能是关键字和保留字

标识符的命名最好能反映出其作用 ,java语言对字母的大小写有严格的要求.所有自定义标识符需全部遵循标识符的命名规范.

 

6.    标识符能不能使用汉字开头?为什么?

可以,字母的含义包括:英文、汉字等(不建议大家使用汉字来定义标识符)

标识符所指的字母:是广义的字母,Unicode字符集,所以用中文也不会报错

7.    Java中有没有goto语句?有没有goto关键字?

java中没有goto语句,有goto关键字

goto这个词是C语言中的,goto语句通常与条件语句配合使用,可用来实现条件转移, 构成循环,跳出循环体等功能。而在结构化程序语言中一般不主张使用goto语句, 以免造成程序流程的混乱,使理解和调试程序都产生困难。但是在java语言中,goto这个词只是作为了保留字,还没有使用。那是因为java语言讲究简单,方便。

8.    byte,short,int,long类型,分别占用几个字节?表数范围多大?

byte:1个字节  -128~127

short:2个字节  -215~215-1【-32768`32767

int:4个字节  -231~231-1【-3.423E38~3.423E38】

long:8个字节 -263~263-1【-1.798E308~1.798E308】

9.    整型常数默认是什么类型?

int类型

10.  float,double分别占用几个字节?

float:4个字节

double:8个字节

11.  如何用科学计数法表示3.14?

314E-2

12.  浮点常量默认是什么类型?

double类型

13.  如下写法哪些是不对的:

       a.  byte b = 30;

       b.  byte c = 500;

       c.  long d = 2343223;

       d.  float f = 3.14;

b:不对,超出了byte的范围

d:不对,缺少f,应该写为3.14f或3.14F

 

14.  浮点数能用于比较吗?下面可能打印什么结果:

 

float d1 = 423432423f;

float d2 = d1+1;

if(d1==d2 ){

        System.out.println("d1==d2");

}else{

System.out.println("d1!=d2");

}

打印结果为: d1 == d2

float类型的数据在内存中的存储形式为科学计数法, 且有效位数为7位, 则d1为4.2343242E8, d2用科学计数法表示同样为4.2343242E8, 因此d1 == d2

(float类型最大值为4.23432416E8)

15.  字符型变量几个字节? 这种写法对不? char c = "d";

字符型变量占2个字节

写法不对,应该为char c=‘d’;    

16.  布尔型变量占用空间是一位还是一个字节?

布尔型变量占一位(默认值为false)    

17.  这种写法好不好?   if(b==true)

不好,应写为if(b)

18.  常量的声明使用哪个关键字?

常量的声明使用的关键字是final

19.  常量的命名规范是?

全部由大写字母组成,单词间通过下划线来界定

20.  解释一下,驼峰原则?

当变量或函数名称需要多个英文单词组成时,首字母以小写开头,每个单词首字母大写(第一个单词除外)

是变量以及函数的命名原则,比如变量username要写作userName。当变量或函数名称需要由多个英文单词组成时,每个英文单词的首字母要大写,但第一个单词的首字母可大写,也可以不大写。这样一个变量或函数名看起来就像驼峰一样起起伏伏,可以提高代码的可读性

21.  使用Scanner接收键盘输入,是否一定要加import Java.util.*; ?

需要导包

也可以写为import java.util.Scanner;

22.  类名的命名规则是? 方法名、变量名的命名规则是否一致? 常量的命名规则是?

类的命名规则:每个英文单词的首字母都大写

方法名、变量名的命名规则:第一个单词首字母小写,从第二个单词后,每个单词的首字母大写

常量的命名规则:字母全部大写

23.  引用类型是占用几个字节?

引用数据类型占4个字节,用于存储对象的引用

24.  算术运算符中类型提升是怎么回事? a+b返回什么类型? int a=3; long b=3;

   类型提升指的是自动类型转换

   a+b返回的是long类型

类型转换:(1)赋值:

                自动转换:byteb=10;

                          Int n=b;

                强制转换:intn=10

                         Byte b=(byte)n;

         (2)算术运算:数据类型提升;

 

25.   i++和++i的异同之处

i++;

相同:都是变量i自增1

  i++与++i作为一条单独语句使用时, 没有区别

不同:i++是先使用i的值进行其他运算,然后再自增1

      ++i是先自增1,然后再使用i的值进行其他运算

Y=3+i++;

26.  关系运算符中,能不能这么写:"1

不能,

应该写为a>1&&a<3

27.  逻辑运算符|、&、!、^的含义及其运算规则? 

 或: 只要有一个为true,则直接返回true

& 与: 只要有一个为false,则直接返回false

 非: 如果为true,则返回false,如果为false,则返回true

 ^ 异或: 如果两个操作数相同,则返回false,如果两个操作数不同,则返回true

28.  运算符||和|的异同之处

         &&    &

相同:

|| 与 | 都是逻辑运算符, 运算规则都为只要有一个为true,则直接返回true

不同:

       || 短路或 : 从左到右计算,如果符号左边的操作数为true,则不会继续计算,直接返回                     true; 如果符号左边的操作数为false,则需要继续计算

      | 逻辑或:操作数左右两边的操作数都需要计算,不会发生短路

   || 只是逻辑运算符

    | 还可以是位运算符中的按位或符号

29.  5*4最快的运算方式是?

位运算5<<2

30. 这两个表达式分别返回什么结果?   ((1<3)?"a":"b")+3+4,  x=-2; x > 0 ? 1 : (x == 0? 0 : -1)

“a”+3+4=”a34”;

‘a’+3+4=104;

((1<3)?"a":"b")+3+4 返回结果为a34

x=-2; x> 0 ? 1 : (x == 0 ? 0 : -1) 返回结果为-1

x>0?1:-1

 

31.  什么情况下,加号会变成字符串连接符?

“+”号左右一个为String类型时,则变成字符连接符

32.  4&5,4|5的结果分别是多少? 4&&5这个操作可行吗?为什么?

4&5的结果为4

4|5的结果为5

4&&5这个操作不可行,因为&&左右要求为boolean类型表达式

 

4&5

True&false:根据左右操作数的不同

 

4&&5:不能,

33.  int能否自动转换成byte,short,char? 是否有一定条件才能转换?

不能

需要强制类型转换

34.  long能自动转换成int吗?long能自动转换成float吗?

Long不能自动转成int

long可以自动转成float

float:4 long:8:float的表数范围比long大;

35.  自动类型转换中,容量小和容量大指的是什么意思?

容量大小指的是不同数据类型的存储数据的范围

36.  强制类型转换中,是否可能发生数据丢失?

可能发生数据丢失

Int n=10;

Byte b=(byte)n;

37.  布尔类型能否自动转换为int? 如果不能,简述理由。

不能

因为类型不匹配

38.  下面两种写法,哪个较好:

       a.70L*60*24*365*70*20

       b.70*60*24*365*70*20L

第一种写法好;

第二种表达式的前半部分70*60*24*365*70的乘积有可能会超过int的取值范围, 导致精度损失


你可能感兴趣的:(Java)