Java刷题大全(笔试题)【大厂必备】(基础)

这篇博客整理了Java基础知识的刷题集,包括标识符规范、数据类型、循环结构、局部变量、三元运算符、异常处理、字符串操作等多个核心知识点,帮助读者巩固Java基础并为面试做好准备。

Java刷题

标识符的规范

  • 26个字母,数字0-9,_ , $

  • 数字不要开头

类与文件名

  1. 有一个类中的类名字前面没有public的情况下,类名和文件名没有任何约束

  2. 一个java文件中可以有多个类,编译后都会生成类.class文件

  3. 如果一个类的前面有public,那么这个类必须与文件名字一致

  4. 一个类中只能有一个public类,其余的类都不能有public

Java基本数据类型中,表输范围最大的是(D)

A. short

B. long

C. int

D. float

题解

byte 1个字节

short 2个字节

int 4个字节

long 8个字节

float 4个字节

double 8个字节

上述的数据类型的表述范围:从上向下一次递增

循环结构是否合法

循环条件要以表达式的方式来体现,结果是boolean类型,不能在条件里面定义变量

循环条件必须是boolean类型,int不能转成boolean

计数器如果是多个变量,用逗号分割就可以了

我们可以在循环前面加上标签,来通过break或continue来跳出当次循环或整个循环,只需要在后面指定标签名

例子:outer:for( ; ; ) break outer;

do-while循环

do{
   
   
   //循环体 
}while(循环条件);

局部变量初始化

下面的程序输出什么()

public class Conditional{
   
   
    public static void main(String args[]){
   
   
        int c;
        sout(c);
        sout(c++);
        sout(c)
    }
}

A. 0 1 1 B. 0 0 1 C. 000 D. 编译不通过

题解

正确答案为D

容易混淆答案:C这是决定错误的,因为局部变量在使用时,必须要初始化

考点

局部变量在使用之前是必须初始化的

三元运算符

在三元运算符的使用与遇见double类型与int类型在运算的时候结果会像double来转换

++与–问题

执行语句int i=1,j=++i;后i与j的值分别为()

i=2,j=2

题解

答案为2 2

因为++i的含义是在当前行i=i+1;

i++的含义是在表达式执行完毕后,i=i+1;

考点

如果多个变量定义在同一行,用逗号分隔开

注意++与–的坑

main方法是Java应用程序执行的入口点,关于main方法的方法头一下哪些是合法的?

public static void main(String[] args) 正确

public static int main(String[] args) 错误,返回类型为void❌

public void main(String[] args) 错误缺少static❌

public static void main(String args[]) 正确,这个要注意

题解

第一个与第四个都是对的

敲击psvm

为什么第四个是对的呢,那是因为在java中也可以使用 String args[]方法来定义数组,虽然是不推荐的,但是也提供了这个方式,所以第四个也是对的

考点

数组的另一种写法

  • String[] args
  • String args[]

死循环

在不考录极值的情况下,下面哪个循环会导致死循环、

for(int k=0;k<0;k++)

for(int k=10;k>0;k–)

for(int k=0;k<10;k–)

for(int k=0;k>0;k++)

题解

for(int k=0;k<0;k++) 因为for循环执行顺序,我们都不会进入循环,也就不会导致死循环

for(int k=10;k>0;k–) 这个循环是可以中止的

for(int k=0;k<10;k–) 此循环是死循环,但是注意不是真正意义上的死循环,因为题目上说不考虑极值的情况下,如果到属性极值也是会自动结束循环的

for(int k=0;k>0;k++) 因为for循环执行顺序,我们都不会进入循环,也就不会导致死循环

主要注意循环执行各个部分的顺序

考点

各种循环的执行顺序,以及考虑极值问题

不同数据类型加法

System.out.println(‘5’+2);的输出结果应该是(D)

A. 52 B. 7 C. 2 D. 55

题解

我们的‘5’,是单引号所以为char类型,我们需要将char类型转换为int类型,通过ASCII码表来进行转换所以为55

基础的变量定义

指出正确的表达式(B,C,D)

A. byte a=128; 128超过byte的范围所以为int类型了,无法自动转换,❌

B. Boolean b=null; 在boolean类型中只能有false和true两种类型,但是Boolean是boolean的包装类,可以为null ✔

C. long l= 0xfffL; 0x代表16进制可以保存✔

D. double d=0.9239d; 正确的,我们平时不加,是因为浮点型默认是double类型所以d可以省略✔

下面语句中在编译时候不会出现警告或错误的是(A)

A. float f=3L; 3L长度是Long类型,因为float的范围大于long所以可以直接赋值 ✔

B. char c=“c”; 双引号表示字符串,字符串无法存入字符中,因为字符串底层是数组,引用数据类型❌

C. boolean b=null; boolean只有两个false和true❌

D. int i=10.0; 10.0为默认浮点类型即为double类型,int类型无法赋值,需要强转❌

switch

下面的方法,当输入i为2的时候返回值是多少?()

public static getValue(int i){
   
   
    long result=0;
    switch(i){
   
   
        case 1:
            result=result+i;
        case 2:
            result=result+i*2;
        case 3:
            result=result+i*3;
    }
    return result;
}

答案:编译异常

题解

本题有两个题解一个是返回值类型不匹配,一个是switch中case没有加break的情况

在我们一般人来说,刚刚看到case这个考题点的时候就有可能会感觉知道考点了,直接就会选错

一句话:骄兵必败

注意如果case中没有添加break,那么将符合的case以及下面全部的case全部执行完毕

前++与后++

下面的代码中,执行之后i和j的值是什么

int i=1;int j;
j=i++*2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值