Java基础面试题_基础语法入门汇总(1)

Java面试 潘老师 2年前 (2022-02-27) 5525 ℃ (0) 扫码查看



Java基础面试题的第一部分就是Java的基础语法入门,这种类型的面试题一般针对刚毕业的大学生在实习面试或者初入企业进行求职应聘时设计的题型,主要重点考察你对java基础语法的掌握程度,对编程基础的认知。

此类型的题目一般比较容易,但是要细心审题,不然会掉进一些别人故意挖好的坑,从而让面试官觉得你基础不扎实,这对应面试而言,相当致命,因此潘老师将一些常见的Java基础入门面试题及答案整理如下,希望大家耐心学习,认真体会。

第1题:JVM、JDK与JRE的含义和区别?

1)JVM:全称(Java Virtual Machine),意为Java虚拟机,是运行所有java程序的假想计算机,我们运行的java代码,都运行在jvm上。
2)JRE:全称(Java Runtime Environment),意为java程序运行环境,包含jvm和运行时所需要的核心类库;
3)JDK:全称(Java Development Kit), 意为java程序开发工具包,包含JRE和开发人员使用的工具。
如果我们想要运行一个已有的java程序,那么只需要安装JRE即可,可是我们如果开发一个全新的java程序,那么必须安装JDK。
JVM、JDK与JRE的关系图

第2题:int类型可以存储多少个字节和取值范围?

A 1个字节 , -128 ~ 127
B 2个字节, 32 768 – 32 767
C 4字节 -2 147 483 648 – 2 147 483 647 (正好超过 20 亿)
D 8个字节 -9 223 372 036 854 775 808 – 9 223 372 036 854 775 807
答案:C
解析:byte是一个字节保存的,有8个位,即8个0、1。8位的第一个位是符号位,也就是说0000 0001代表的是数字1,1000 0000代表的就是-1,所以正数最大位0111 1111,也就是数字127,负数最大为1111 1111,也就是数字-128,所以Java中的一个byte是1个字节,其范围是-128~127,而short两个字节,int四个字节,long八个字节,char两个字节,范围也就可以算出来了。

第3题:java源文件和编译后得文件拓展名分别为()

A: .class和.java B: .java 和.class
C: .class和.class D: .java和.javac
答案:B
解析:源文件就是程序员们所编写出来的java代码,类文件则是通过java虚拟机编译后没有语法错误生成的.class文件

第4题:如下哪些不是java的关键字?( )

A.const
B.NULL
C.false
D.this
E.native
答案:BC
解析:虽然null false 还有true不是java的关键字,但是都有特殊用途,不建议作为标识符。

第5题:下面能通过编译运行出Hello World的是()

A:
public class Hello {
    public static void main(String[]args) {
        System.out.println("Hello World");
    }
}
B:
public class Hello {
    public static void main(String[] args) {
        system.out.println("Hello World");
    }
}
C:
public class Hello {
    public static void main(String[] args) {
        System.out.println("Hello World");
    }
}
D:
public class Hello {
    public static main(String[] args) {
        System.out.println("Hello World");
    }
}

答案:A C
解析:B错在system首字母小写,D错在没有void,不难,但需要细心对待这类代码题。

第6题:以下哪些定义的变量是正确的()

A int 1abc;
B char abc1;
C long #abc;
D boolean $abc;
E:String _123456;
答案 B D E
解析:因为java中变量名必须是一个以字母开头并由字母或者数字构成的序列,字母包括 A-Z,a-z,_,$或在某种语言中表示的字母的任何Unicode字符。变量名中所有的字符都是有意义的,并且大小写敏感,变量名基本上没有限制。

第7题:String 是最基本的数据类型吗?

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

第8题: 已知int arr[ ] = {3,1,2,7,4,5,6};下面哪个表达式的值与数组下标量总数相等?( )

A .arr.length()
B.arr.length
C.arr.length()+1
D.arr.length+1
答案:B
数组下标是从零开始的,但是数据下标的总量和数据长度相同
在基本JAVA类型中,如果不明确指定,整数型的默认是什么类型?

第10题:在基本JAVA类型中,如果不明确指定,整数型的默认是什么类型?带小数的默认是什么类型?

解析:Java中,如果对整数不指定类型,默认时int类型,对小数不指定类型,默认是double类型。如果要指定长整型,最好写为long a = 100000000L,如果要指定为单精度最好写为float a= 12.34F

第11题:选择下面代码的运行结果:()

public class Test{
    public void method(){
        for(int i = ; i < 3; i++){
            System.out.print(i);
        }
        System.out.print(i);
    }
}

A.122
B.123
C.编译错误
D.没有任何输出
答案:C
解析:i变量的作用范围是整个for循环,超出范围引用则报错。

第12题:以下代码,打印出来的数值类型为()

double a = 15.0;
int b=2;
system.out.println(a+b);

解析:double类型。如果两个操作数中有一个是double类型,另一个操作数就会自动转换为double类型

第13题:java类可以作为?()

A:类型定义机制;
B:数据封装机制;
C:类型定义机制和数据封装机制
D:上述都不对;
答:C
解析:类即可以作为类型定义机制也可以作为数据封装机制。

第14题:以下哪个约束符可用于定义成员常量?()

A、 static
B、final
C、abstract
D、finally
答案 B
解析:static 静态成员变量(在定义这个变量的类的实例中,这个变量是唯一的,即多个实例间这个变量为共享的),final 成员常量(必须在定义时或在构造方法中赋初值),final static 静态成员常量,必须在定义这个常量时给定其初始化值。finally是在try..catch..finally捕获异常时用的。

第15题:下面float的赋值语句错误的是?()

A:float f=3.4;
B:float f=3.4F;
C:float f=1.0;
D:float f=1;
答:AC
解析:3.4是双精度数,将双精度型(double)赋值给浮点型(float)属于下转型(down-casting,也称为窄化)会造成精度损失,因此需要强制类型转换float f =(float)3.4; 或者写成float f =3.4F; float a = 1;这里的1是整形,当赋值给一个float时,存在一个隐式转换,不损失精度。

第16题:java语言使用的字符码集是()

A ASCII
B BCD
C DCB
D Unicode
答案:D
解析:Java语言使用的是Unicode字符集,ASCII是国际上使用最广泛的字符编码

第17题:JAVA所定义的版本中不包括:( )

A、 JAVA2 EE
B、 JAVA2 Card
C、 JAVA2 ME
D、 JAVA2HE
E、 JAVA2 SE
答案:D
解析:
Java企业版:JEE 适用于创建服务器应用程序和服务的Java 平台企业版
Java标准版: JSE 适用于桌面系统的Java 平台标准版
JME:适用于小型设备和智能卡的Java 平台Micro版
Java Card技术主要是让智能卡或与智能卡相近的设备上,以具有安全防护性的方式来运行小型的Java Applet,此技术也被广泛运用在SIM卡、提款卡上。

第18题:下列说法正确的是( )

A、 JAVA程序的main方法必须写在类里面
B、 JAVA程序中可以有多个main方法
C、 JAVA程序中类名必须与文件名一样
D、 JAVA程序的main方法中如果只有一条语句,可以不用{}(大括号)括起来
答案:A
解析:
A:main()方法必须都写在类里面,在Java中,main()方法是Java应用程序的入口方法,也就是说,程序在运行的时候,第一个执行的方法就是main()方法,这个方法和其他的方 法有很大的不同,比如方法的名字必须是main,方法必须是public static void 类型的,方法必须接收一个字符串数组的参数等等。
B:这个之前没用过多个main方法,自己试一下,可以用多个mian为方法名的方法,但是只能有一个public static void main(String[] args){}这个方法
C:只有标记为public的类,名字才必须与文件名相同,public外部类必须与文件名相同,这样的类有且只有一个,public 内部类 名字不与文件名相同
D: JAVA程序的main方法中,不管有多少条语句都必须用{}(大括号)括起来

第19题:变量命名规范说法正确的是( )

A、 变量由字母、下划线、数字、$符号随意组成;
B、 变量不能以数字作为开头;
C、 A和a在java中是同一个变量;
D、 不同类型的变量,可以起相同的名字;
答案:B
解析:变量名只能是字母(a-z A-Z),数字(0-9),下划线(_)的组合,并且之间不能包含空格,数字不能放在变量名首位。不要在同一个类的不同上下文中重用相同的变量名。

第20题:下列javaDoc注释正确的是( )

A、 /我爱学习Java编程/
B、 //我爱学习Java编程/
C、 /**我爱学习Java编程*/
D、 /我爱学习Java编程**/
答案:C
解析:Java 支持三种注释方式。前两种分别是 // 和 /* */,第三种被称作说明注释,它以 /** 开始,以 */结束。

第21题: 为一个boolean类型变量赋值时,可以使用( )方式

A、 boolean = 1;
B、 boolean a = (9 >= 10);
C、 boolean a=”真”;
D、 boolean a == false;
答案:B
boolean即java中的基本类型——布尔类型,值只有true和false两种。
分析:A是对int类型的赋值方式。
B中(9>=10)的值是false,因为有关系运算符是用来比较运算,结果只有对(true)与错(false)两种,是boolean类型,所以B正确
C的赋值方式根本不对,既不符合char类型,也不符合String类型
D中“==”是关系运算符,不能用来赋值,如果“==”改成“=”就是正确的

第22题: 以下( )不是合法的标识符

A、 STRING
B、 x3x;
C、 void
D、 de$f
答案:C
解析:void属于java中的关键字
[1]Java标识符只能由数字、字母、下划线“”或“$”符号以及Unicode字符集组成
[2]Java标识符必须以字母、下划线“”或“$”符号以及Unicode字符集开头
[3]Java标识符不可以是Java关键字、保留字(const、goto)和字面量(true、false、null)
[4]Java标识符区分大小写,是大小写敏感的

第23题: 表达式(11+3*8)/4%3的值是( )

A、 31
B、 0
C、 1
D、 2
答案: D
先乘除后加减,有括号先按括号算3*8=24,11+24=35,35/4=8,8%3=2,结果是2

第24题:关于Java语言,下列描述正确的是(多选)

A. switch 不能够作用在String类型上
B. List, Set, Map都继承自Collection接口
C. Java语言支持goto语句
D. GC是垃圾收集器,程序员不用担心内存管理
答案:AD
解析:B. Map没有继承Collection接口,C.java不支持goto语句

第25题:数组有没有length()这个方法? String有没有length()这个方法

解析:数组没有length()这个方法,有length的属性。String有有length()这个方法

第26题:对于以下,z的结果下面正确是是()

有int x = 5, y =6, z; z = ++x + y++;
A:10
B:8
C:11
D:12
答案:D
解析:++x ,y++ 将 x = 5, y =6带入里面 得到 6 ,6 所以结果为12

第27题:下列代码运行结果中c值为()

int a=5;
int b=++a;
int c=a+(++b)

A:11
B:13
C:10
D:12
答案 B
解析:
a=5; b=++a; // 相当于a=a+1;b=a; 结果是a=6,b=6
int c=a+(++b) //先计算 ++b =6+1=7; c=6+7=13;
这个主要是考察自增的运算, ++在变量前面就是先让变量+1 再运算;++在变量的后面就是 先运算再做加1操作。

第28题:计算2

A:6
B:54
C:8
D:16
答案D
解析:2<<3; 表示 2向左移 3位:2 * 2^3(2的3次方) = 2 * 8;因为一个数左移 n位,就相当于 2的 n次方,那么一个数乘以 8只要将其左移 3位即可,而为运算符的效率最高,所以 2乘以 8等于几的最有效方法是 2<<3

第29题:说说&和&&的区别。

&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。
&&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式,例如,对于if(str!=null&& !str.equals(s))表达式,当str为null时,后面的表达式不会执行,所以不会出现NullPointerException。如果将&&改为&,则会抛出NullPointerException异常。If(x==33 &++y>0) y会增长,If(x==33 && ++y>0)不会增长。
&还可以用作位运算符,当&操作符两边的表达式不是boolean类型时,&表示按位与操作,我们通常使用0x0f来与一个整数进行&运算,来获取该整数的最低4个bit位,例如,0x31 & 0x0f的结果为0x01。

第30题:在JAVA中如何跳出当前的多重嵌套循环?

在Java中,要想跳出多重循环,可以在外面的循环语句前定义一个标号,然后在里层循环体的代码中使用带有标号的break语句,即可跳出外层循环。但通常并不使用标号这种方式,而是让外层的循环条件表达式的结果可以受到里层循环体代码的控制,从而满足结束循环的条件。

第31题:switch语句能否作用在byte上,能否作用在long上,能否作用在String上?

在JDK1.5版本之前,只能在switch语句中使用可以可以隐式转换成int的数据类型(如 byte, char, short,int),这些数据类型在转换成成int类型时可以不损失精度。不能作用在long上。
在JDK1.7版本之后,String类型也可以被支持了。

第32题:char型变量中能不能存贮一个中文汉字?为什么?

char型变量是用来存储Unicode编码的字符的,unicode编码字符集中包含了汉字,所以,char型变量中当然可以存储汉字啦。不过,如果某个特殊的汉字没有被包含在unicode编码字符集中,那么,这个char型变量中就不能存储这个特殊汉字。补充说明:unicode编码占用两个字节,所以,char类型的变量也是占用两个字节。

第33题:静态变量和实例变量的区别?

在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。
在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。

例如,对于下面的程序,无论创建多少个实例对象,永远都只分配了一个staticVar变量,并且每创建一个实例对象,这个staticVar就会加1;但是,每创建一个实例对象,就会分配一个instanceVar,即可能分配多个instanceVar,并且每个instanceVar的值都只自加了1次。

public class VariantTest{
    public static int staticVar = 0;
    public int instanceVar = 0;
    public VariantTest(){
        staticVar++;
        instanceVar++;
        System.out.println(staticVar +instanceVar);
    }
}

总结

以上就是Java基础面试题的基础语法入门部分的面试题及答案的汇总,后期还将会不断完善。


版权声明:本站文章,如无说明,均为本站原创,转载请注明文章来源。如有侵权,请联系博主删除。
本文链接:https://www.panziye.com/javainterview/4573.html
喜欢 (3)
请潘老师喝杯Coffee吧!】
分享 (0)
用户头像
发表我的评论
取消评论
表情 贴图 签到 代码

Hi,您需要填写昵称和邮箱!

  • 昵称【必填】
  • 邮箱【必填】
  • 网址【可选】