java面试1:常见java数据类型

第一部分:必背易漏知识点:

1.变量命名规则

字、下、美、人、数、骆驼;变量名首字母小写;有意义;不能使用关键字;

2.默认类型

在java中,整型默认是int类型,浮点型默认是double类型

3.常量

在声明前加final;常量名通常大写;不同字符使用下划线分隔(驼峰命名);只能被赋值一次,通常定义时即对其初始化

4.类型转换(重点)
4.1简单数据类型之间的转换

在java中,整型、浮点型、字符型被视为简单数据类型,这些类型由低到高分别为(byte.short,char)——int——long——float——double

简单数据类型之间的转化又可以分为:低级到高级的自动类型转换、高级到低级的强制类型转换、包装类过渡类型转换

(1)自动类型转换
byte b;	int i =b;	long l=b;	float f=b;	double d=b;
char c='c';	int i =c;	System.out.println("output:"+i); // "output:99

对于byte、short、char三种类型而言,它们是相同级别的,因此,不能相互自动转换,可以使用下述的强制类型转换

short i=99;	char c=(char)i;	System.out.println("output:"+c); // "output:c
(2)强制类型转换 口诀:长变短要强制,高变低也一样。

这种情况会导致溢出或者精度的下降

int i=99;	byte b=(byte)i;	char c=(char)i;
(3)包装类过渡类型转换

在进行简单数据类型之间的转换(自动转换或者强制转化)时,可以利用包装类进行中间过渡。一般情况下,首先声明一个变量,然后生成一个对应的包装类,就可以利用包装类的各种方法进行类型转换了

①:当希望把float型转换为double型时

float f1=100.00f;
Float  F1= new Float(f1);
Double d1 = F1.doubleValue();

②:当希望把double类型转换为int型时

double d1 =100.00;
Double D1=new Double(d1);
int i1=D1.intValue();
4.2字符串与其他数据类型的转换

java.lang.Object类派生的类都提供了toString()方法

4.3其他实用数据类型之间的转换

第二部分:练习题

选择题:

2.1下面选项对boolean型变量的声明,请选择哪些选项是正确的?

A.boolean b1;

B.boolean b2=1;

C.boolean b3=‘true’;

D.boolean b4=false;

E.boolean b5=Boolean.false();

试题分析:布尔类型是最简单的一种数据类型,布尔型变量是用关键字boolean来定义且布尔型数据只有两个值:true和false,分别表示“真”和“假”。在Java中,布尔类型是不能转换为int型。

参考答案:AD

2.2基本数据类型与String类型之间的转换

表达式10.4+"4.2"的结果是什么?

A.返回double类型14.6

B.返回String类型“14.6”

C.返回long类型14;

D.返回String类型“10.44.2”

试题分析:当+运算符两侧的操作数的类型不一致时,需要统一类型,这时就会发生类型转换。当一个操作数为原始数据类型,另外一个为字符串时,则基本类型的操作数要转换为等价的字符串,这时“+”不再是加运算符而是连接符。

参考答案:D

2.3选出对float变量的合法声明

下面选项中表示的是对float型变量的声明,请选择哪些是正确的?

A.float fa=-586;

B.float fb=3.1415;

C.float fc=0xA4E;

D.float fd=42e1.2L;

E.float fe=52.08D;

F.float ff=5.88F;

试题分析:浮点常量默认为双精度数,如果需要指定为单精度数,需要在末尾加上F或f。

参考答案:ACF

2.4.下面那一项关于基本数据类型的描述是正确的?

A. boolean数据类型只有true和false两种取值

B. 使用long可以保存小数

C. float数据类型可以保存的数据范围比double数据范围要大

D. byte数据类型可以正常保存200这个数字

正确答案是:A

long是长整型

float浮点型

double双精度浮点型

float保存的数据范围比double数据范围要小

byte 存int值 需要强制类型转换

2.5下列表达式,正确的的是

A.byte b =128;

B.boolean flag =null;

C.float f =0.929;

D.long a =2147483648L

正确答案是:D

A中byte能表示的取值范围为[-128,127],因此不能表示128。B中boolean的取值只能是true或false,不能为null。C中0.929为double类型,需要进行数据类型转换。

问答题

2.6 java中int、 char、long各占多少字节?

4、2、8
在java中,char类型占2个字节;原因:Java编译器默认使用Unicode编码,因此2字节(16位)可以表示所有字符。java中占2个字节有short和char;而byte和boolean占1个字节,int和float占4个字节。

2.7String 是最基本的数据类型吗?

不是。Java中的基本数据类型只有8个:byte、short、int、long、float、double、char、boolean;除了基本类型(primitive type),剩下的都是引用类型(reference type),枚举类型(enumeration type)也是引用类型

2.8short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗?(常考题)

java语言在涉及byte、short和char类型的运算时,首先会把这些类型的变量值强制转换为int类型,然后对int类型的值进行计算,最后得到的值也是int类型。

对于short s1 = 1; s1 = s1 + 1;由于1是int类型,因此s1+1运算结果也是int 型,需要强制转换类型才能赋值给short型。而short s1 = 1; s1 += 1;可以正确编译,因为s1+= 1;相当于s1 = (short)(s1 + 1);其中有隐含的强制类型转换。

“+=”为java语言规定的运算符,java编译器会对其进行特殊处理,因此short s1 = 1; s1 += 1;能够编译通过

2.9float f=3.4;是否正确?

不正确。在java中,整型默认是int类型,浮点型默认是double类型

3.4默认是双精度数,将双精度型(double)赋值给浮点型(float)属于下转型(down-casting,也称为窄化)会造成精度损失,因此需要强制类型转换float f =(float)3.4; 或者写成float f=3.4F。

2.10char型数据的取值是多少?

0~65535

2.11下面程序运行结果是什么?

int i =1;
if (i) {
	System.out.println("true");
} else {
    System.out.println("false");
}

答案:编译错误。基本数据类型与boolean类型是不能相互转换的。if条件只接受boolean类型的值(true或者false),而i的类型为int类型不能被隐式地转换为boolean

2.12对于下述代码结果强制类型转换后,变量a和b的值分别为()

short a =128;
byte b =(byte)a;

答案:a=128,b=-128。short类型变量占两个字节,a对应的二进制为:0000,0000,1000,0000,由于byte只占一个字节,在强制转换为byte的时候只截取低字符:1000,0000,10000000是-128的补码,因此b的值为-128

2.13怎么将 byte 转换为 String?

可以使用 String 接收 byte[] 参数的构造器来进行转换,需要注意的点是要使用的正确的编码,否则会使用平台默认编码,这个编码可能跟原来的编码相同,也可能不同

2.14我们能将 int 强制转换为 byte 类型的变量吗?如果该值大于 byte 类型的范围,将会出现什么现象?

是的,我们可以做强制转换,但是 Java 中 int 是 32 位的,而 byte 是 8 位的,所以,如果强制转化是,int 类型的高 24 位将会被丢弃,byte 类型的范围是从 -128 到 128

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值