3.数据结构、类型转换

1. 基础类型(Primitives)与封装类型(Wrappers)的区别在哪里
2. 简述九种基本数据类型的大小,以及他们的封装类
3. int 和 Integer 哪个会占用更多的内存? int 和 Integer 有什么区别?parseInt()函数在什么时候使用到
4. float和double的默认值是多少
5. 如何去小数四舍五入保留小数点后两位
6. char 型变量中能不能存贮一个中文汉字,为什么
7. 怎样将 bytes 转换为 long 类型
8. 怎么将 byte 转换为 String
9. 如何将数值型字符转换为数字
10. 我们能将 int 强制转换为 byte 类型的变量吗?如果该值大于 byte 类型的范围,将会出现什么现象
11. 能在不进行强制转换的情况下将一个 double 值赋值给 long 类型的变量吗

12. 类型向下转换是什么

1. 基础类型(Primitives)与封装类型(Wrappers)的区别在哪里

基本数据类型的好处就是速度快(不涉及到对象的构造和回收),封装类的目的主要是更好的处理数据之间的转换。
(1)传递方式不同:基本类型(原始数据类型)在传递参数时都是按值传递,而封装类型是按引用传递的
(2)封装类可以有方法和属性
(3)默认值不同:如int i,i的预设为0;Integer j,j的预设为null
(4)存储位置:基本类型在内存中是存储在栈中,引用类型的引用(值的地址)存储在栈中,而实际的对象(值)是存在堆中。

2. 简述九种基本数据类型的大小,以及他们的封装类

基本类型 大小(字节) 默认值 封装类
byte 1 (byte)0 Byte
short 2 (short)0 Short
int 4 0 Integer
long 8 0L Long
float 4 0.0f Float
double 8 0.0d Double
boolean - false Boolean
char 2 \u0000(null) Character
void - - Void









3. int 和 Integer 哪个会占用更多的内存? int 和 Integer 有什么区别?parseInt()函数在什么时候使用到 
参考链接

Integer,Integer是对象int是基本数据类型,字符串转Integer时使用parseInt()。

4. float和double的默认值是多少:char \u0000(null),float 0.0f,double 0.0d
5. 如何去小数四舍五入保留小数点后两位

(1)BigDecimal b = new BigDecimal(f);    double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
(2)new java.text.DecimalFormat("#.00").format(3.1415926);
(3)double d = 3.1415926;    String result = String.format("%.2f", d);
(4)Math.round(5.2644555 * 100) * 0.01d;

6. char 型变量中能不能存贮一个中文汉字,为什么

在Java中,char类型占2个字节,而且Java默认采用Unicode编码,一个Unicode码是16位,所以一个Unicode码占两个字节,Java中无论汉子还是英文字母都是用Unicode编码来表示的。所以,在Java中,char类型变量可以存储一个中文汉字。

7. 怎样将 bytes 转换为 long 类型 参考链接

(1)java代码实现
(2)借助java.nio.ByteBuffer实现
(3)借助java.io.DataInputStream实现

8. 怎么将 byte 转换为 String 参考链接

(1)String s = new String(bytes,"UTF-8");
(2)java8可以使用Base64,String encoded = Base64.getEncoder().encodeToString(bytes);

9. 如何将数值型字符转换为数字:使用包装器对应的方法,比如Integer.parseInt()和Double.parseDouble()方法。
10. 我们能将 int 强制转换为 byte 类型的变量吗?如果该值大于 byte 类型的范围,将会出现什么现象

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

11. 能在不进行强制转换的情况下将一个 double 值赋值给 long 类型的变量吗

不行,你不能在没有强制类型转换的前提下将一个 double 值赋值给 long 类型的变量,因为 double 类型的范围比 long 类型更广,所以必须要进行强制转换。

12. 类型向上、向下转换是什么

向上转型:通俗地讲即是将子类对象转为父类对象。此处父类对象可以是接口。
向下转型:与向上转型相反,即是把父类对象转为子类对象。

你可能感兴趣的:(面试)