java基础(一):java语法基础

前言

上个月本来打算跳槽去帝都,面了几家公司,已经拿到offer,但是因为毕业设计的事情没有离职成功,在面试过程中发现了自身的许多不足,尤其是java基础这方面,所以打算把最近整理的一些java基础知识(大部分来自毕向东老师的总结),放到博客中,方便以后查阅,同时也希望能够帮助到大家。不断更新。。

java数据类型

1.基本数据类型

在掌握8种基本数据类型以后还要清楚占几个字节:
字符型:char 2个字节
整数类型:byte 1个字节,short 2个字节,int 4个字节,long 8个字节
浮点类型:float 4个字节,double 8个字节。
布尔类型:Boolean 1个字节
(注:1个字节 = 8位)
级别从低到高为:byte,char,short(这三个平级)–>int–> long –> float –>double
自动类型转换:从低级别到高级别,系统自动转的;
强制类型转换:什么情况下使用?把一个高级别的数赋给一个别该数的级别低的变量;
注意:String不是基础数据类型
基本数据类型对象包装类:是按照面向对象思想将基本数据类型封装成了对象。
好处:
1:可以通过对象中的属性和行为操作基本数据。
2:可以实现基本数据类型和字符串之间的转换。

基本数据类型 包装类
byte Byte
short Short
long Long
double Double
char Character
Boolean Boolean

基本数据类型对象包装类:都有 XXX parseXXX 方法
只有一个类型没有parse方法:Character ;
面试相关:
1.说一下java中的基本数据类型,各占多少字节。
2.不同基本数据类型转换问题,注意强制转化、精度丢失问题。
3.java包装类型装箱拆箱问题。
4.判断两个值是否相等的问题?如下:

Integer i1 = 100;
        Integer i2 = 100;
        Integer i3 = 200;
        Integer i4 = 200;   
        System.out.println(i1 == i2);//true
        System.out.println(i3 == i4);//false

        Double d1 = 100.0;
        Double d2 = 100.0;
        Double d3 = 200.0;
        Double d4 = 200.0;      
        System.out.println(d1 == d2);//false
        System.out.println(d3 == d4);//false

        Boolean b1 = false;
        Boolean b2 = false;
        Boolean b3 = true;
        Boolean b4 = true;
        System.out.println(b1 == b2);//false
        System.out.println(b3 == b4);//false

        Integer a = 1;
        Integer b = 2;
        Integer c = 3;
        Integer d = 3;
        Integer e = 321;
        Integer f = 321;
        Long g = 3L;
        Long h = 2L;

        System.out.println(c == d);//true
        System.out.println(e == f);//false
        System.out.println(c == (a + b));//true
        System.out.println(c.equals(a + b));//true
        System.out.println(g == (a + b));//true
        System.out.println(g.equals(a + b));//false
        System.out.println(g.equals(a + h));//true

解释:答案如上注释部分,核心考察点就是上道题的答案,即 java 1.5 开始的自动装箱拆箱机制其实是编译器自动完成的替换,装箱阶段自动替换为了 valueOf 方法,拆箱阶段自动替换为了 xxxValue 方法。对于 Integer 类型的 valueOf 方法参数如果是 -128~127 之间的值会直接返回内部缓存池中已经存在对象的引用,参数是其他范围值则返回新建对象;而 Double 类型与 Integer 类型一样会调用到 Double 的 valueOf 方法,但是 Double 的区别在于不管传入的参数值是多少都会 new 一个对象来表达该数值(因为在指定范围内浮点型数据个数是不确定的,整型等个数是确定的,所以可以 Cache)。 注意:Integer、Short、Byte、Character、Long 的 valueOf 方法实现类似,而 Double 和 Float 比较特殊,每次返回新包装对象。 对于两边都是包装类型的比较 == 比较的是引用,equals 比较的是值,对于两边有一边是表达式(包含算数运算)则 == 比较的是数值(自动触发拆箱过程),对于包装类型 equals 方法不会进行类型转换。

String

1.String类是final类,所以说String类不能被继承,并且它的成员方法都默认为final方法。
2.String类的底层是用一个char数组来保存字符串。
3.String对象一旦被创建就是固定不变的了,对String对象的任何改变都不影响到原对象,相关的任何change操作都会生成新的对象,所以对String进行改变会性能下降和资源的浪费。

猜你喜欢

转载自blog.csdn.net/plei_yue/article/details/79663320