下面为大家分享一些java实习生基础面试题:
(更多相关面试题推荐:java面试题及答案)
1、Java到底是什么东西?
Java是一款面向对象的编程语言,是SUN(斯坦福大学网络公司)1995年推出的,在2010年被ORACLE收购
2、Java这么热门它有什么特点呢?
Java是跨平台性的语言(一处编译,到处执行)。
例如:Java在Windows平台中编写hello.java文件—>编译成hello.class文件;在不同的操作系统中安装对应的Java虚拟机(所有的系统平台必须有JVM才可以运行Java编译的文件),就可以直接运行
3、Java的三种技术架构
Java三种基本技术架构分别是:JavaSE、JavaEE、JavaME
JavaSE:是JavaEE与JavaME的基础,是非常平面话的
JavaEE:适合开发者的平台主要针对WEB应用系统的开发
JavaME:开发小型的电子消费品;比如:手机上的APP;机器上的语言(电梯、扫地机器人)
4、在编写Java程序时的注意点
(1)、Java是大小写敏感的,对应的Hello和hello是不同的
(2)、Java对于所有的类来说,类的首字母应该大写、若类名有多个单词组成,则每个单词首字母都应该大写。如:MyFirstJava
(3)、Java所有的方法名首字母都应该小写,如有多个单词组成,则后面的单词首字母要大写。如:findByName
(4)、源文件必须与类名一致
5、Java有那几个基本数据类型
Java有八种基本数据类型:byte、short、int、long、float、double、char、boolean(六种数字类型:四个整型(byte、short、int、long),两个浮点型(float、double))
byte:数据类型是8位、有符号的,以二进制补码表示的整数。用于大型数组中节约空间,用为byte变量占用的空间只有int类型的四分之一。对应的包装类:Byte,取值(27- 27-1)
short:数据类型是16位、以二进制补码表示的整数。short数据类型也可以像byte那样节约空间。一个short变量是int型变量的二分之一。对应的包装类:Short。取值(215- 215-1)
int:数据类型是32位、有符号的,以二进制补码表示的整数。一般的整型变量默认为int类型。取值(231- 231-1)
long:数据类型是64位,有符号的,以二进制补码表示的整数。这种数据类型主要使用在需要比较大整数的系统上。取值(263- 263-1)
float:数据类型是单精度、32位的浮点数。float在存储大型浮点数组的时候可以节约内存空间。默认值是0.0f。浮点数不能用来表示精确的值,如货币。
double:数据类型是双精度、64位的浮点数。浮点数的默认类型位double类型。double类型同样不能表示精确的值,如货币。默认值是0.0d。
char:类型是一个单一的16位Unicode字符。char数据类型可以存储任何字符。但只能存储一个字符
boolean:数据类型表示一位数字信息,只有两个取值:true和false。这种类型只作为一种标志来记录true\false情况,默认值是false。
6、访问权限修饰符分别是什么?
访问权限修饰符有:public、protected、default(默认不写)、private
public:最大访问权,用于对外的接口
protected:用于保护子类传递给子类一种继承的东西
default:是针对与本包的访问而设计的
private:访问权限仅限于类的内部,不能被外层的类访问
7、怎样才能运行一个程序?
所有的Java程序都是由public static viod main(String []args){}方法开始执行。
8、Java中经常提到的对象是什么?
对象是类的一个实例,有状态有行为。
例如:一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。
软件对象也有状态和行为。软件的对象就是属性,行为通过方法体现
9、类是什么?
类是一个模板,它描述一类对象的行为和状态,一个类可以拥有多个方法
10、类里面的方法,要如何去构造?
创建一个对象的时候,至少要调用一个构造方法。构造方法的名称必须与类同名,一个类可以有多个构造方法。
11、如何创造一个对象?
对象是根据类创建的。在Java中,使用关键字new来创建一个新的对象。创建对象需要三步:
声明:声明一个对象,包括对象的名称和对象的类型。
实例化:使用关键字new来创建一个对象
初始化:使用new来创建对象时会调用构造方法初始化对象
12、源文件的声明有声明规则?
(1)、源文件只能有一个public类
(2)、可以有多个非public类
(3)、源文件的名称必须与类同名
(4)、如果源文件定义在某个包内,那么导包应该在源文件的首行。
(5)、如果源文件包含import语句,那么在包语句和类之间定义,如果没有package语句,那么import语句应该在源文件最前面
(6)、import语句和package语句对源文件中定义的所有类都有效。在同一源文件中,不能给不同的类定义不同的包声明
13、什么是变量?
变量就是申请内存来存储值。也就是说,当创建变量的时候,需要在内存中申请空间。内存管理系统根据变量的类型来分配空间,分配的空间只能用来存储该类型的数据。
14、定义变量有什么作用?
通过定义不同的类型,可以用于存储不同类型的数(如:整数,小数、字符)
15、各个类型之间能不能转换?
从低到高:
byte,short,char——>int——>long——>float——>double
可以自动转换。
(1)、不能对boolean类型进行类型转换
(2)、不能把对象类型转换成不相关类的对象
(3)、把容量大的类型转换为容量小的类型时必须强制类型转换(type)value type。转换过程中可能导致溢出或损失精度
(4)、自动类型转换必须满足转换前的数据的位数小于转换以后的数据类型位数。
(5)、浮点型到整数的转换是直接通过舍弃小数部分得到,而不是四舍五入。
例如:(int)23.7 == 23, (int)-23.7 = = -23
16、java运算符有哪些?
(·1)、算数运算符:与数学中的类似,主要有+ - * \ % ++ --(++a是先在原来基础加1再进行运算,a–则先运算再减1)
(2)、逻辑运算符:主要有 && || !
(3)、赋值运算符:主要起一个赋值的作用,常用的有 = += -=
(4)、条件运算符:也称为三元运算符。该运算符有3个操作数,并且需要判断布尔表达式的值。该运算符的主要是决定那个值应该赋值给变量
例如:int a = (20==40)? 30 : 50;
17、java主要的三种循环结构是?
Java主要的三种循环结构:while 循环、do……while循环、for循环
(1)、while是最基本的循环,它的结构为:
while(布尔表达式){
//循环内容
}
只需要布尔表达式为true,循环会一直进行。
(2)、do…while循环和while循环相识,不同的是,do…while循环至少会执行一次。
do{
//循环内容
}while(布尔表达式)
(3)、for循环执行的次数是在执行前就确定的
for(初始化;布尔表达式;更新){
//代码语句
}
18、循环结构有什么关键字吗?
主要有:break和continue;
break:主要用在循环语句或者switch语句中,用来跳出整个语句块;break跳出当前循环,并且继续执行该循环下面的语句。
continue:适用于任何循环控制结构中,作用是让程序立即跳转到下一次循环的迭代。在for循环中,continue语句使程序立即跳转到更新语句。
在while和do…while循环中,程序立即跳转到布尔表达式的判断语句。
19、Number类是一个什么东西?
当内置数据类型被当作对象使用的时候,编译器会把内置类型装箱为包装类。Number类属于java.lang包。所有的包装类(Integer、Long、Byte、Double、Float、Short)都是抽象类Number的子类。
20、Java中Math类是怎么样的?
包含了用于执行基本的数学运算的属性与方法,如初等指数、对象、平方根和三角函数。Math的方法都被定义为static形式。通过Math类可以在主函数中直接调用。
21、Math中的floor,round、ceil有什么区别?
ceil:返回大于等于给指导参数的最小整数(例如:Math.ceil(23.2) ==24 而不是四舍五入)
floor:返回小于等于给指导参数的最大整数(例如:Math.ceil(23.7) ==23 而不是四舍五入)
round:它表示四舍五入,算法为Math.round(x+0.5),即将原来的数加上0.5后再向下取整。所以,Math.round(11.4) 等于11,Math.round(11.5) 等于12,Math.round(-11.5) 等于-11。
22、Character类是什么东西,该类有哪些方法?
Character:是Java语言为内置基本数据类型char提供的包装类。
Character主要的方法有:isLetter()—是否是一个字母;toString—返回字符串的长度,字符串长度仅为1;isUpperCase()----是否是大写字母;isLowerCase()—是否是小写字母。
23、前面有反斜杠(\)的字符代表的转义字符有哪些?
常用的转义字符有:\t(在文中该处插入一个tab键)
\d(在文中该处插入一个后退键)
\n(在文中该处插入换行)
\r(在文中该处插入回车)
24、Java的String类有什么注意事项?
字符串在Java中属于对象,Java提供String类来创建和操作字符串。String类是不可以改变的,一旦创建String对象,那么它的值就无法改变了。如果需要对字符串进行修改就应该使用StringBuffer或StringBuilder类。
25、length()方法,length属性和size()的方法有什么区别?
length()方法是针对字符串来说的,要求一个字符串的长度就要用到它的length()方法;
length()属性是针对Java中数组来说的,要求数组的长度可以用其length属性;
java中的size()是针对泛型集合来说的,如果想看这个泛型有多少元素,就调用这个方法来查看!
26、连接字符串的方法有哪些?
有两种:
(1)、字符串1.concat(字符串2)
(2)、更常用的是使用‘+’操作来连接字符串,如:“Hello”+“Word”+"!";
27、Java中StringBuffer和StringBuilder类有什么区别?
StringBuilder类在Java 5被提出,它和StringBuffer之间最大的不同在于StringBuilder的方法不是线程安全的(不能同步访问)由于StringBuilder相对与StringBuffer有速度的优势,所以大多数情况下使用StringBuilder。然而在应用程序要求线性安全的情况下,则必须使用StringBuffer类。
28、StringBuffer是如何实现对象修改的?
String Buffer主要有append()方法完成连接,insert()方法完成增加;reverse()方法完成反转;replace()方法完成替换。
如:buf.append(“hi”);
buf.insert(0,“Hello”); //在第一个内容之前添加
buf.insert(buf.length,‘Hello’); //在最后面插入数据
String str = buf.reverse().toString(); //将内容反转后转为字符串
buf.replace(6,11,“yes”); //将word的内容替换
29、数组可以作为参数传递到方法里吗?
可以
30、如何获取当前时间,以及自定义时间?
打印当前时间:Data data = new Date(); data就是当前时间!
设置日期时间格式,SimpleDateFormat
SimpleDateFormat sc = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
System.out.printf(sc.format(要转换的时间))
31、Java是如何进行休眠的?
休眠sleep()使当前线程进入停滞状态(阻塞当前进程),让出cpu的使用、目的是不让当前的线程独自霸占该线程所获取的cpu资源,以留一定时间给其他线程执行的机会。可以让程序休眠几毫秒的时间。Tread.sleep(1000*3) //休眠3秒
32、如何设置获取日期格式的特定部分,比如年,月,日,日分秒?
是使用Calender类。Calender类是一个抽象类,在实际的使用时实现特定的子类的对象,创建对象的过程对程序员来说是透明的,只需要使用getInstance方法创建即可。
33、使用的话有什么类或者方法吗?
java.util.regex包主要包括以下三个类:
Pattern类:Pattern对象是正则表达式的编译表示,Pattern类没有公共构造方法。要创建一个Pattern对象,必须首先调用其公共的静态编译方法,它返回一个Pattern对象。
Matcher类:Matcher对象是对输入的字符串进行编译和匹配操作的引擎。
PatternSyntaxExeption:PatternSyntaxExeption是一个非强制异常类,它表示一个正则表达式模式的语法错误。
34、构造方法与方法之间有什么联系?
构造方法的概念:当创建对象时,系统会自动调用构造方法。没有自定义构造方法时,系统会调用默认的构造方法。构造方法可以被重载,不能被重写,不同的构造方法名字相同,参数列表不同,参数列表是其识别的依据、标准、类似与人的名字有可能相同但是身份证不相同。
当自定义构造方法时,系统依据传入的参数类型、数量,自动匹配构造方法初始化对象。
35、Scanner类是什么?如何创建Scanner对象
java.util.Scanner是java5的一个新特征。我们可以获取用户的输入。
Scanner sc = new Scanner();
36、Scanner类的next()与nextLine()方法获取输入的字符串有什么区别?
next():
(1)、一定要读取到有效字符后才会结束输入;
(2)、对对输入有效的字符之间遇到空白,会自动去掉;
(3)、只有输入有效字符才能将后面输入的空白作为分隔符或结束符;
(4)、next()不能得到带有空格的字符串;
nextLine():
(1)、以Enter为结束符,即输入回车之前的所有字符;
(2)、可以获得空白;
37、Java三种类型的异常是什么?
检查时异常:最具有检查性异常的是用户错误或问题引起的异常,这是程序员无法预见的。例如要打开一个不存在的文件时,一个异常就发生了,这些异常在编译时不能被简单的忽略。
运行时异常:运行异常是可以被程序员避免的异常。与检查时异常相反,运行时异常可以在编译时被忽略。
错误:错误不是异常,而是脱离程序员控制的问题,错误在代码中通常被忽略。例如:当栈溢出时,一个错误就发生了,它们在编译也检查不到的。
在 Java 中所有异常类型都是内置类 java.lang.Throwable 类的子类,即 Throwable 位于异常类层次结构的顶层。Throwable 类下有两个异常分支 Exception 和 Error,如图所示。
38、异常和错误的区别?
所有的异常都继承Throwable类,也就是说所有的异常都是一个对象。
从大体来分异常分为两块:
(1)、错误error:是指程序无法处理的错误,表示应用程序运行时出现的重大错误。例如jvm运行时出现的OutOfMemoryError以及Socket编程时出现的端口被占用等程序无法处理的错误
(2)、Exception异常:异常可分为运行时异常和编译异常,异常类有两个主要的子类:IOException类和RuntimeException类
39、什么是捕捉异常?
使用try和catch关键字捕捉异常,try/catch代码块放在异常可能发生的地方。try/catch代码块中的代码成为保护代码。
40、throws和throw关键字的区别?
如果一个方法没有捕获一个检查时异常,那么该方法必须使用throws关键字来声明。throws关键字放在方法签名的尾部。也可以使用throw抛出一个异常,无论它是最新实例化的还是刚捕获到的。
一个方法可以声明抛出多个异常,多个异常之间用逗号隔开。
41、在Java中如何自定义异常?
可以自己编写异常类:
(1)、所有的异常都必须是Throwable类的子类;
(2)、如果希望写一个检查时异常,则需要继承Exception;
(3)、如果需要编写一个运行时异常,那么就需要继承RuntimeException()异常
42、什么是继承?继承的特点有哪些?
继承是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
特点:
(1)、子类拥有父类非private的属性,方法;
(2)、子类可以拥有自己的属性和方法,即子类可以对父类进行扩展;
(3)、子类可以拥有自己的方式实现父类的方法;
(4)、Java继承只能是单继承,但是可以多重继承,单继承就是一个子类只能继承一个父类,多重继承就是:A继承B,B继承C,所以按照关系就行C类是B类的父类,B是A的父类,这就是java继承区别与c++的一个特征。
43、继承的关键字是什么?
继承可以使用extends和Implements这两个关键字来实现继承。而且所有的类都继承与java.lang.Object,当一个类没有继承的关键字,则默认继承Object(这个类在java.lang包中所以不需要导包)类。
super关键字:可以super关键字来实现对父类成员的访问,用来引用当前对象继承的父类。
this关键字:指向自己的引用。
final关键字:声明类可以把类定义为不能继承的,即最终类;或者用于修饰方法,该方法不能被子类重写
44、父类的构造器有什么特点?
子类不能继承父类的构造器(构造方法和构造函数(带有参数)),但是父类的构造器带有参数的,则必须在子类的构造器中显式的通过supper关键字调用父类是构造器并适当的参数列表:
如果父类有无参构造器,则在子类的构造器中用supper调用父类不是必须的,如果没有使用super关键字,则系统会自动调用父类的无参构造器。
45、什么是重写(override),什么是重载(overLoad),他们两个的区别?
重写:是子类对父类的允许访问的方法的实现过程进行重写编写,返回值和参数不能改变,即外壳不能改变,核心改变。重写的好处在于子类可以根据需要,定于特定于自己的行为。也就是说子类能够根据需要实现父类的方法。重写方法不能抛出检查时异常或者比重写方法声明更加宽泛的异常。
重载:重载是在一个类里面,方法名相同,而参数不同,返回类型可以相同也可以不相同。每一个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。最常见的就是构造器的重载。
区别:方法的重写与重载是java多态的不同表现,重写是父类与子类之间多态性的一种表现,重载可以理解为多态的具体表现形式。
(1)、方法重载是一个类中定义了多个方法名相同,而且参数不同或数量相同类型不同和次序不同,则成为方法的重载。
(2)、方法重写是在子类存在方法与父类方法的名字相同,而且参数的个数与类型一样,返回值也一样的方法,称为重写
(3)、方法重载是一个类的多态性表现,二方法的重写是子类与父类的一种多态表现。
46、什么是抽象类,如何定义抽象类与方法?
抽象类:抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量,成员方法和构造方法的访问方式和普通类不一样。由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用:
父类包含了子类集合的常见方法,但是由于父类本身是抽象的,所以不能使用这些方法。在Java中抽象类表示的是一种继承关系,一个类只能继承一个抽象类,而一个类却可以实现多个接口。
定义抽象类:在Java语言中使用abstract class来定义抽象类。
定义抽象方法:如果想设计这样的类,该类包含一个特殊的成员方法,该方法的具体实现有它的子类确定,那么你可以在父类中声明该方法。Abstract关键字同样用来声明抽象方法,抽象方法只包含一个方法名,没有方法体(抽象方法没有定义,方法名后面直接跟一个分号,而不是花括号)。如果一个类有抽象方法那么一定是抽象类
47、声明抽象方法会有什么结果?
(1)、如果一个类包含抽象方法,那么该类必须是抽象类
(2)、任何一个子类必须重写父类的抽象方法,或声明自身为抽象类。
(推荐教程:java课程)
48、封装是什么,有什么优点?Java是怎么进行封装的?
封装:是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。封装可以认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。
优点:
(1)、良好的封装能够减少耦合;
(2)、类内部的结构可以自由修改;
(3)、可以对成员变量进行更精准的控制;
(4)、隐藏信息,实现细节;
进行封装:
(1)、修改属性的可见性来限制对属性的访问(一般限制为private);
(2)、对每一个值属性提供对外的接口的公共方法访问。也就是说,用于对私有属性的访问。(通常情况下这些方法被称为getter和setter方法,例如开发中的实体类)
49、接口与类的异同?
相同:
(1)、一个接口可以可以有多个方法;
(2)、接口文件保存在.java结尾的文件中
(3)、接口的字节码文件保存在.class结尾的文件中
不同:
(1)、接口不能实例化对象(与抽象类一样)
(2)、接口没有构造方法;
(3)、接口中所有的方法必须是抽象方法;
(4)、接口中不能包含成员变量;
(5)、接口不能被类继承(被类实现 );
(6)、接口支持多继承;
50、抽象类和接口的区别?
(1)、抽象类中的方法可以有方法体,就是能实现方法具体功能,但是接口中的方法不行。
(2)、抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的;
(3)、接口中不能包含静态代码块以及静态方法(用static修饰的方法),而抽象类可以有静态代码块和静态方法
(4)、一个类只能继承一个抽象类,而一个类可以实现多个接口。
接口是隐士抽象的,当声明一个接口时,不必使用abstract关键字。接口中每一个方法也是隐性抽象的,声明时不必加abstract。接口中的方法在接口中有实现接口的类来实现接口中的方法。
做为一个Java应届生来说,Java基础是至关重要的也是绝对会问道的问题。如果连这些基础都掌握你好的话,那我们面试通过的几率就微乎其微了。下面就让我们一起来复习一下Java基础吧!
1、Java到底是什么东西?
Java是一款面向对象的编程语言,是SUN(斯坦福大学网络公司)1995年推出的,在2010年被ORACLE收购
2、Java这么热门它有什么特点呢?
Java是跨平台性的语言(一处编译,到处执行)。
例如:Java在Windows平台中编写hello.java文件—>编译成hello.class文件;在不同的操作系统中安装对应的Java虚拟机(所有的系统平台必须有JVM才可以运行Java编译的文件),就可以直接运行
3、Java的三种技术架构
Java三种基本技术架构分别是:JavaSE、JavaEE、JavaME
JavaSE:是JavaEE与JavaME的基础,是非常平面话的
JavaEE:适合开发者的平台主要针对WEB应用系统的开发
JavaME:开发小型的电子消费品;比如:手机上的APP;机器上的语言(电梯、扫地机器人)
4、在编写Java程序时的注意点
(1)、Java是大小写敏感的,对应的Hello和hello是不同的
(2)、Java对于所有的类来说,类的首字母应该大写、若类名有多个单词组成,则每个单词首字母都应该大写。如:MyFirstJava
(3)、Java所有的方法名首字母都应该小写,如有多个单词组成,则后面的单词首字母要大写。如:findByName
(4)、源文件必须与类名一致
5、Java有那几个基本数据类型
Java有八种基本数据类型:byte、short、int、long、float、double、char、boolean(六种数字类型:四个整型(byte、short、int、long),两个浮点型(float、double))
byte:数据类型是8位、有符号的,以二进制补码表示的整数。用于大型数组中节约空间,用为byte变量占用的空间只有int类型的四分之一。对应的包装类:Byte,取值(27- 27-1)
short:数据类型是16位、以二进制补码表示的整数。short数据类型也可以像byte那样节约空间。一个short变量是int型变量的二分之一。对应的包装类:Short。取值(215- 215-1)
int:数据类型是32位、有符号的,以二进制补码表示的整数。一般的整型变量默认为int类型。取值(231- 231-1)
long:数据类型是64位,有符号的,以二进制补码表示的整数。这种数据类型主要使用在需要比较大整数的系统上。取值(263- 263-1)
float:数据类型是单精度、32位的浮点数。float在存储大型浮点数组的时候可以节约内存空间。默认值是0.0f。浮点数不能用来表示精确的值,如货币。
double:数据类型是双精度、64位的浮点数。浮点数的默认类型位double类型。double类型同样不能表示精确的值,如货币。默认值是0.0d。
char:类型是一个单一的16位Unicode字符。char数据类型可以存储任何字符。但只能存储一个字符
boolean:数据类型表示一位数字信息,只有两个取值:true和false。这种类型只作为一种标志来记录true\false情况,默认值是false。
6、访问权限修饰符分别是什么?
访问权限修饰符有:public、protected、default(默认不写)、private
public:最大访问权,用于对外的接口
protected:用于保护子类传递给子类一种继承的东西
default:是针对与本包的访问而设计的
private:访问权限仅限于类的内部,不能被外层的类访问
7、怎样才能运行一个程序?
所有的Java程序都是由public static viod main(String []args){}方法开始执行。
8、Java中经常提到的对象是什么?
对象是类的一个实例,有状态有行为。
例如:一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。
软件对象也有状态和行为。软件的对象就是属性,行为通过方法体现
9、类是什么?
类是一个模板,它描述一类对象的行为和状态,一个类可以拥有多个方法
10、类里面的方法,要如何去构造?
创建一个对象的时候,至少要调用一个构造方法。构造方法的名称必须与类同名,一个类可以有多个构造方法。
11、如何创造一个对象?
对象是根据类创建的。在Java中,使用关键字new来创建一个新的对象。创建对象需要三步:
声明:声明一个对象,包括对象的名称和对象的类型。
实例化:使用关键字new来创建一个对象
初始化:使用new来创建对象时会调用构造方法初始化对象
12、源文件的声明有声明规则?
(1)、源文件只能有一个public类
(2)、可以有多个非public类
(3)、源文件的名称必须与类同名
(4)、如果源文件定义在某个包内,那么导包应该在源文件的首行。
(5)、如果源文件包含import语句,那么在包语句和类之间定义,如果没有package语句,那么import语句应该在源文件最前面
(6)、import语句和package语句对源文件中定义的所有类都有效。在同一源文件中,不能给不同的类定义不同的包声明
13、什么是变量?
变量就是申请内存来存储值。也就是说,当创建变量的时候,需要在内存中申请空间。内存管理系统根据变量的类型来分配空间,分配的空间只能用来存储该类型的数据。
14、定义变量有什么作用?
通过定义不同的类型,可以用于存储不同类型的数(如:整数,小数、字符)
15、各个类型之间能不能转换?
从低到高:
byte,short,char——>int——>long——>float——>double
可以自动转换。
(1)、不能对boolean类型进行类型转换
(2)、不能把对象类型转换成不相关类的对象
(3)、把容量大的类型转换为容量小的类型时必须强制类型转换(type)value type。转换过程中可能导致溢出或损失精度
(4)、自动类型转换必须满足转换前的数据的位数小于转换以后的数据类型位数。
(5)、浮点型到整数的转换是直接通过舍弃小数部分得到,而不是四舍五入。
例如:(int)23.7 == 23, (int)-23.7 = = -23
16、java运算符有哪些?
(·1)、算数运算符:与数学中的类似,主要有+ - * \ % ++ --(++a是先在原来基础加1再进行运算,a–则先运算再减1)
(2)、逻辑运算符:主要有 && || !
(3)、赋值运算符:主要起一个赋值的作用,常用的有 = += -=
(4)、条件运算符:也称为三元运算符。该运算符有3个操作数,并且需要判断布尔表达式的值。该运算符的主要是决定那个值应该赋值给变量
例如:int a = (20==40)? 30 : 50;
17、java主要的三种循环结构是?
Java主要的三种循环结构:while 循环、do……while循环、for循环
(1)、while是最基本的循环,它的结构为:
while(布尔表达式){
//循环内容
}
只需要布尔表达式为true,循环会一直进行。
(2)、do…while循环和while循环相识,不同的是,do…while循环至少会执行一次。
do{
//循环内容
}while(布尔表达式)
(3)、for循环执行的次数是在执行前就确定的
for(初始化;布尔表达式;更新){
//代码语句
}
18、循环结构有什么关键字吗?
主要有:break和continue;
break:主要用在循环语句或者switch语句中,用来跳出整个语句块;break跳出当前循环,并且继续执行该循环下面的语句。
continue:适用于任何循环控制结构中,作用是让程序立即跳转到下一次循环的迭代。在for循环中,continue语句使程序立即跳转到更新语句。
在while和do…while循环中,程序立即跳转到布尔表达式的判断语句。
19、Number类是一个什么东西?
当内置数据类型被当作对象使用的时候,编译器会把内置类型装箱为包装类。Number类属于java.lang包。所有的包装类(Integer、Long、Byte、Double、Float、Short)都是抽象类Number的子类。
20、Java中Math类是怎么样的?
包含了用于执行基本的数学运算的属性与方法,如初等指数、对象、平方根和三角函数。Math的方法都被定义为static形式。通过Math类可以在主函数中直接调用。
21、Math中的floor,round、ceil有什么区别?
ceil:返回大于等于给指导参数的最小整数(例如:Math.ceil(23.2) ==24 而不是四舍五入)
floor:返回小于等于给指导参数的最大整数(例如:Math.ceil(23.7) ==23 而不是四舍五入)
round:它表示四舍五入,算法为Math.round(x+0.5),即将原来的数加上0.5后再向下取整。所以,Math.round(11.4) 等于11,Math.round(11.5) 等于12,Math.round(-11.5) 等于-11。
22、Character类是什么东西,该类有哪些方法?
Character:是Java语言为内置基本数据类型char提供的包装类。
Character主要的方法有:isLetter()—是否是一个字母;toString—返回字符串的长度,字符串长度仅为1;isUpperCase()----是否是大写字母;isLowerCase()—是否是小写字母。
23、前面有反斜杠(\)的字符代表的转义字符有哪些?
常用的转义字符有:\t(在文中该处插入一个tab键)
\d(在文中该处插入一个后退键)
\n(在文中该处插入换行)
\r(在文中该处插入回车)
24、Java的String类有什么注意事项?
字符串在Java中属于对象,Java提供String类来创建和操作字符串。String类是不可以改变的,一旦创建String对象,那么它的值就无法改变了。如果需要对字符串进行修改就应该使用StringBuffer或StringBuilder类。
25、length()方法,length属性和size()的方法有什么区别?
length()方法是针对字符串来说的,要求一个字符串的长度就要用到它的length()方法;
length()属性是针对Java中数组来说的,要求数组的长度可以用其length属性;
java中的size()是针对泛型集合来说的,如果想看这个泛型有多少元素,就调用这个方法来查看!
26、连接字符串的方法有哪些?
有两种:
(1)、字符串1.concat(字符串2)
(2)、更常用的是使用‘+’操作来连接字符串,如:“Hello”+“Word”+"!";
27、Java中StringBuffer和StringBuilder类有什么区别?
StringBuilder类在Java 5被提出,它和StringBuffer之间最大的不同在于StringBuilder的方法不是线程安全的(不能同步访问)由于StringBuilder相对与StringBuffer有速度的优势,所以大多数情况下使用StringBuilder。然而在应用程序要求线性安全的情况下,则必须使用StringBuffer类。
28、StringBuffer是如何实现对象修改的?
String Buffer主要有append()方法完成连接,insert()方法完成增加;reverse()方法完成反转;replace()方法完成替换。
如:buf.append(“hi”);
buf.insert(0,“Hello”); //在第一个内容之前添加
buf.insert(buf.length,‘Hello’); //在最后面插入数据
String str = buf.reverse().toString(); //将内容反转后转为字符串
buf.replace(6,11,“yes”); //将word的内容替换
29、数组可以作为参数传递到方法里吗?
可以
30、如何获取当前时间,以及自定义时间?
打印当前时间:Data data = new Date(); data就是当前时间!
设置日期时间格式,SimpleDateFormat
SimpleDateFormat sc = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
System.out.printf(sc.format(要转换的时间))
31、Java是如何进行休眠的?
休眠sleep()使当前线程进入停滞状态(阻塞当前进程),让出cpu的使用、目的是不让当前的线程独自霸占该线程所获取的cpu资源,以留一定时间给其他线程执行的机会。可以让程序休眠几毫秒的时间。Tread.sleep(1000*3) //休眠3秒
32、如何设置获取日期格式的特定部分,比如年,月,日,日分秒?
是使用Calender类。Calender类是一个抽象类,在实际的使用时实现特定的子类的对象,创建对象的过程对程序员来说是透明的,只需要使用getInstance方法创建即可。
33、使用的话有什么类或者方法吗?
java.util.regex包主要包括以下三个类:
Pattern类:Pattern对象是正则表达式的编译表示,Pattern类没有公共构造方法。要创建一个Pattern对象,必须首先调用其公共的静态编译方法,它返回一个Pattern对象。
Matcher类:Matcher对象是对输入的字符串进行编译和匹配操作的引擎。
PatternSyntaxExeption:PatternSyntaxExeption是一个非强制异常类,它表示一个正则表达式模式的语法错误。
34、构造方法与方法之间有什么联系?
构造方法的概念:当创建对象时,系统会自动调用构造方法。没有自定义构造方法时,系统会调用默认的构造方法。构造方法可以被重载,不能被重写,不同的构造方法名字相同,参数列表不同,参数列表是其识别的依据、标准、类似与人的名字有可能相同但是身份证不相同。
当自定义构造方法时,系统依据传入的参数类型、数量,自动匹配构造方法初始化对象。
35、Scanner类是什么?如何创建Scanner对象
java.util.Scanner是java5的一个新特征。我们可以获取用户的输入。
Scanner sc = new Scanner();
36、Scanner类的next()与nextLine()方法获取输入的字符串有什么区别?
next():
(1)、一定要读取到有效字符后才会结束输入;
(2)、对对输入有效的字符之间遇到空白,会自动去掉;
(3)、只有输入有效字符才能将后面输入的空白作为分隔符或结束符;
(4)、next()不能得到带有空格的字符串;
nextLine():
(1)、以Enter为结束符,即输入回车之前的所有字符;
(2)、可以获得空白;
37、Java三种类型的异常是什么?
检查时异常:最具有检查性异常的是用户错误或问题引起的异常,这是程序员无法预见的。例如要打开一个不存在的文件时,一个异常就发生了,这些异常在编译时不能被简单的忽略。
运行时异常:运行异常是可以被程序员避免的异常。与检查时异常相反,运行时异常可以在编译时被忽略。
错误:错误不是异常,而是脱离程序员控制的问题,错误在代码中通常被忽略。例如:当栈溢出时,一个错误就发生了,它们在编译也检查不到的。
在 Java 中所有异常类型都是内置类 java.lang.Throwable 类的子类,即 Throwable 位于异常类层次结构的顶层。Throwable 类下有两个异常分支 Exception 和 Error,如图所示。
38、异常和错误的区别?
所有的异常都继承Throwable类,也就是说所有的异常都是一个对象。
从大体来分异常分为两块:
(1)、错误error:是指程序无法处理的错误,表示应用程序运行时出现的重大错误。例如jvm运行时出现的OutOfMemoryError以及Socket编程时出现的端口被占用等程序无法处理的错误
(2)、Exception异常:异常可分为运行时异常和编译异常,异常类有两个主要的子类:IOException类和RuntimeException类
39、什么是捕捉异常?
使用try和catch关键字捕捉异常,try/catch代码块放在异常可能发生的地方。try/catch代码块中的代码成为保护代码。
40、throws和throw关键字的区别?
如果一个方法没有捕获一个检查时异常,那么该方法必须使用throws关键字来声明。throws关键字放在方法签名的尾部。也可以使用throw抛出一个异常,无论它是最新实例化的还是刚捕获到的。
一个方法可以声明抛出多个异常,多个异常之间用逗号隔开。
41、在Java中如何自定义异常?
可以自己编写异常类:
(1)、所有的异常都必须是Throwable类的子类;
(2)、如果希望写一个检查时异常,则需要继承Exception;
(3)、如果需要编写一个运行时异常,那么就需要继承RuntimeException()异常
42、什么是继承?继承的特点有哪些?
继承是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
特点:
(1)、子类拥有父类非private的属性,方法;
(2)、子类可以拥有自己的属性和方法,即子类可以对父类进行扩展;
(3)、子类可以拥有自己的方式实现父类的方法;
(4)、Java继承只能是单继承,但是可以多重继承,单继承就是一个子类只能继承一个父类,多重继承就是:A继承B,B继承C,所以按照关系就行C类是B类的父类,B是A的父类,这就是java继承区别与c++的一个特征。
43、继承的关键字是什么?
继承可以使用extends和Implements这两个关键字来实现继承。而且所有的类都继承与java.lang.Object,当一个类没有继承的关键字,则默认继承Object(这个类在java.lang包中所以不需要导包)类。
super关键字:可以super关键字来实现对父类成员的访问,用来引用当前对象继承的父类。
this关键字:指向自己的引用。
final关键字:声明类可以把类定义为不能继承的,即最终类;或者用于修饰方法,该方法不能被子类重写
44、父类的构造器有什么特点?
子类不能继承父类的构造器(构造方法和构造函数(带有参数)),但是父类的构造器带有参数的,则必须在子类的构造器中显式的通过supper关键字调用父类是构造器并适当的参数列表:
如果父类有无参构造器,则在子类的构造器中用supper调用父类不是必须的,如果没有使用super关键字,则系统会自动调用父类的无参构造器。
45、什么是重写(override),什么是重载(overLoad),他们两个的区别?
重写:是子类对父类的允许访问的方法的实现过程进行重写编写,返回值和参数不能改变,即外壳不能改变,核心改变。重写的好处在于子类可以根据需要,定于特定于自己的行为。也就是说子类能够根据需要实现父类的方法。重写方法不能抛出检查时异常或者比重写方法声明更加宽泛的异常。
重载:重载是在一个类里面,方法名相同,而参数不同,返回类型可以相同也可以不相同。每一个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。最常见的就是构造器的重载。
区别:方法的重写与重载是java多态的不同表现,重写是父类与子类之间多态性的一种表现,重载可以理解为多态的具体表现形式。
(1)、方法重载是一个类中定义了多个方法名相同,而且参数不同或数量相同类型不同和次序不同,则成为方法的重载。
(2)、方法重写是在子类存在方法与父类方法的名字相同,而且参数的个数与类型一样,返回值也一样的方法,称为重写
(3)、方法重载是一个类的多态性表现,二方法的重写是子类与父类的一种多态表现。
46、什么是抽象类,如何定义抽象类与方法?
抽象类:抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量,成员方法和构造方法的访问方式和普通类不一样。由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用:
父类包含了子类集合的常见方法,但是由于父类本身是抽象的,所以不能使用这些方法。在Java中抽象类表示的是一种继承关系,一个类只能继承一个抽象类,而一个类却可以实现多个接口。
定义抽象类:在Java语言中使用abstract class来定义抽象类。
定义抽象方法:如果想设计这样的类,该类包含一个特殊的成员方法,该方法的具体实现有它的子类确定,那么你可以在父类中声明该方法。Abstract关键字同样用来声明抽象方法,抽象方法只包含一个方法名,没有方法体(抽象方法没有定义,方法名后面直接跟一个分号,而不是花括号)。如果一个类有抽象方法那么一定是抽象类
47、声明抽象方法会有什么结果?
(1)、如果一个类包含抽象方法,那么该类必须是抽象类
(2)、任何一个子类必须重写父类的抽象方法,或声明自身为抽象类。
48、封装是什么,有什么优点?Java是怎么进行封装的?
封装:是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。封装可以认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。
优点:
(1)、良好的封装能够减少耦合;
(2)、类内部的结构可以自由修改;
(3)、可以对成员变量进行更精准的控制;
(4)、隐藏信息,实现细节;
进行封装:
(1)、修改属性的可见性来限制对属性的访问(一般限制为private);
(2)、对每一个值属性提供对外的接口的公共方法访问。也就是说,用于对私有属性的访问。(通常情况下这些方法被称为getter和setter方法,例如开发中的实体类)
49、接口与类的异同?
相同:
(1)、一个接口可以可以有多个方法;
(2)、接口文件保存在.java结尾的文件中
(3)、接口的字节码文件保存在.class结尾的文件中
不同:
(1)、接口不能实例化对象(与抽象类一样)
(2)、接口没有构造方法;
(3)、接口中所有的方法必须是抽象方法;
(4)、接口中不能包含成员变量;
(5)、接口不能被类继承(被类实现 );
(6)、接口支持多继承;
50、抽象类和接口的区别?
(1)、抽象类中的方法可以有方法体,就是能实现方法具体功能,但是接口中的方法不行。
(2)、抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的;
(3)、接口中不能包含静态代码块以及静态方法(用static修饰的方法),而抽象类可以有静态代码块和静态方法
(4)、一个类只能继承一个抽象类,而一个类可以实现多个接口。
接口是隐士抽象的,当声明一个接口时,不必使用abstract关键字。接口中每一个方法也是隐性抽象的,声明时不必加abstract。接口中的方法在接口中有实现接口的类来实现接口中的方法。
相关推荐:java入门
以上是java实习生面试题的详细内容。更多信息请关注PHP中文网其他相关文章!