1.Java中有哪些基本数据类型?String是基本数据类型吗?String类是否能够继承?
答:1.java定义了4中类8种基本类型:
整型:byte、short、int、long
浮点型:float、double
布尔型: boolean
字符型: char
2.String不是基本数据类型,String属于引用类型。
3.String类是一个final类,因此不能被继承。
2.简述++i和i++的区别?
答:
int i=0;
System.out.print("++i先自加1再赋值得到结果是=");
System.out.println(++i);
控制台打印:++i先自加1再赋值得到结果是=1
----------------------------------------
int i=0;
System.out.print("i++先赋值,然后再自加1得到结果=");
System.out.println(i++);
控制台打印:i++先赋值,然后再自加1得到结果=0
1
2
3
4
5
6
7
8
9
3.short s=1;s=s+1;有什么错?short s=1;s+=1;有什么错?
答:1.对于short s=1;s=s+1;由于short数据类型和int数据类型表示范围不一样,所以需要进行类型转换,解决方案是:要么将short改为int,要么强制类型转换(short)s+1。
2.对于 short s=1;s+=1;由于+=是Java的规定运算符,Java编译器会对它进行特殊处理,因此可以正确编译。
4.Integer和int的区别?
答:参考博客 Integer是一个封装int类型的封装类,默认值为null,int是Java中8中数据类型之一,默认值为0.
5.&和&&的区别?
答:&表示逻辑运算符:必须计算左右两个表达式之后再取结果值。&&表示运算符先计算左边表达式如果为true,则不计算右边。如果左边表达式为false那么就需要计算右边表达式。
6.使用最有效的方式计算出2乘以4等于几?
答:使用位运算:2<<2
位运算符 功能 案例 说明
<< 左移 a< < b 将a各比特位向左移动b位
7.String s=new String(“xyz”)创建了几个对象?
答:创建2个String对象,一个是=null的s,一个是=“xyz”的string。
8. 静态变量和实例变量的区别?
答:1.在语法上的区别:静态变量前需要加static关键字,而实例变量不需要加。
2.静态变量不是某一个实例对象的属性,它属于类属性,只要程序加载类的字节码,不需要创建任何实例对象静态变量就可以分配空间从而被使用。必须先创建实例对象,实例变量才会被分配空间,才能使用这个实例变量。
3. 无论创建多少实例对象,永远只分配一个静态变量。创建一个实例对象静态变量会加1,但是每创建一个实例对象就会分配一个实例变量,每个实例变量的值只会自加1.
public class TestProblem {
static int a=0;
int b=0;
public TestProblem() {
a++;
b++;
System.out.println("静态变量数值:"+a);
System.out.println("实例变量数值:"+b);
}
public static void main(String[] args) {
TestProblem testProblem=new TestProblem();
System.out.println("------------");
TestProblem testProblem1=new TestProblem();
}
}
控制台打印结果:
静态变量数值:1
实例变量数值:1
------------
静态变量数值:2
实例变量数值:1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
9.switch语句能否作用在byte上,能否作用在long上,能否作用在String上?
答:1.switch常量表达式的值必须是整型(必须是int)或字符型。
2.在.switch表达式中,括号表达式只能是一个整型表达式或枚举常量整数表达式可以是int基本数据类型会Integer包装类型。由于byte、short、char都可以隐式转换为int,所以这些基本数据类型及其包装类型都可以。
3.long和String无法隐式转换为int类型所以不能在switch中使用。
10.简述String、StringBuffer 和 StringBuilder 区别
答:1.String和StringBuffer的区别:它们都是用于存储和操作字符串,01.String是一个final类表示的类容不可改变。StringBuffer表示的内容可以修改。02.String实现了equals()方法,StringBuffer没有。
2.StringBuffer 和 StringBuilder 区别:01.StringBuffer是线程安全的可以在多线程中使用。 StringBuilder是线程不安全的,但是运行效率非常高!
3.参考博客String、StringBuffer 和 StringBuilder 区别
11.简述自动装箱和自动拆箱
答: 参考:深入剖析Java中的装箱和拆箱
12.简述Java中实现多态的机制是什么?
答:重载(overloading)、重写(overriding)
1.重载(overloading):是一个类中多态的表现,比如一个类中定义多个同名的方法,但它们具有不同的参数或不同参数类型都称之为重载。
2.重写(overriding):子类定义一个方法和父类的方法名称参数都相同,那么父类的方法被重写。
3.参考:理解java的三大特性之多态
13.简述Java反射机制及其作用?
答:1.Reflection:是Java被视为一种动态语言的一个关键性质,这个机制允许程序在运行时通过Reflection API获取任意一个已知名称Class的内部信息。并可在运行时改变字段内容,唤起methods。
2.参考:Java反射机制详解
3.Java API:Class类中的方法
14.简述ArrayList和LinkedList的区别?
答:1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。
2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。
3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。
4.参考:ArrayList和LinkedList的区别
15.简述HashMap的工作原理及HashMap和Hashtable的区别?
答:1.参考:HashMap的工作原理
2.参考:参考:HashMap的工作原理
3.参考:HashMap和Hashtable的区别
4.参考:深入探讨HashMap的结构实现和功能原理。
16.简述java中super()和this()、super和this的区别?
答:1.super()和this()区别:
super():调用父类无形参的构造方法;
super(形参):调用父类中某个带形参的构造方法;
this(形参):调用本类中另一种形式的构造方法
注意:放在方法的首行;
2.super和this的区别:
super.父类的成员变量;
super.父类的方法;
super:当子类中的成员变量、方法和父类的相同时,实现调用父类的成员变量和方法;
this:代表当前的对象;
使用的地方:若函数的形参和成员变量同名时,需要用this.成员变量名
---------------------
作者:凯耐
来源:CSDN
原文:https://blog.csdn.net/weixin_36279318/article/details/80555752