JavaSE知识点考核

本文涵盖了Java编程的基础知识,包括编写打印HelloWorld的程序,介绍JVM的组成及Java的跨平台原理,演示配置JDK环境的过程。此外,讨论了变量、数据类型和命名规范,深入到循环控制、数组操作、面向对象的特性,如继承、接口和访问修饰符,以及异常处理和IO流的使用。文章还涉及线程、进程及其相互关系,提供了丰富的编程示例和解释。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1,俗话说:“一天不练,手生脚慢;两天不练,功夫减半;三天不练,成了门外汉。”作为一名程序员,熟练的敲写代码是必不可少的能力,请你用记事本独立写出打印Hello World的Java程序。

2,我们如果要成为一名Java后端工程师,必不可少的需要了解Java的开发环境和执行过程,而Java程序的开发离开不了JVM(Java虚拟机:Java Virtual Machine),学习Java虚拟机可以帮助开发者更深入地理解Java语言本身的特性,并能更好地理解Java语言相关的编程范例和最佳实践。

  1. 请你介绍一下JVM的基本组成。
  2. 请你讲述Java跨平台、工作原理。
  3. 在安装新版的JDK中,会自动帮你配置Path环境变量,但企业中使用的JDK8可能需要手动配置,所以请你在自己电脑上操作配置JDK环境。

3,选择适合的开发工具(IDE),可以帮助程序员提高开发效率,请你使用自己的开发工具创建一个Java项目的操作过程,要求如下:

4,变量就是内存中的一块区域,用来存储一个数据的,且存储的数据可以被替换。

请你介绍一下Java中命名变量的数据类型。

5,标志符就是名字。我们写程序时会起一些名字,如类名、方法名、变量名,取名时要遵守一定的规则。作为一名优秀的程序员要规范的命名,显示自己的专业性。

(1)标识符的要求

基本要求:由___、___、___和___等组成强制要求:不能以___开头、不能是___、区分大小写。

(2) 命名知道规范

变量名称:满足标识符规则,建议全英文、有意义、首字母__写,满足“驼峰模式”。类名称:  满足标识符规则,建议全英文、有意义、首字母__写,满足“驼峰模式”。

6,计算机对数据的识别、运算和存储都建立在二进制上,数据信息想要在计算机上参与计算都需要被编码。为了方便信息交换,美国国家标准学会ANSI(American National Standard Institute)制定了ASCII编码。

请你写出大写 A 和小写 a 分别对应的ASC||对应的值。

7,开发中会存在不同类型的变量或者数据赋值给其他类型的变量,也存在不同类型的数据一起运算,其结果类型要确定下来,所以请你从小到大写出自动类型转换的形式规则,并说出int类型变量在内存中存储几个字节。

8.说出图片中逻辑运算符 || 和 && 的特点 和 程序运算结果。

9,请说出以下三元运算符的实现思路:

public class test {
    public static void main(String args[]){
        int i = 10;
        int j = 30;
        int k = 50;
        int max = i > j ? i > k ? i : k : j > k ? j : k;
        System.out.println(max);
    }
}

10,Java中分支结构有两种分别是什么。

11,请说明一下if和switch的区别。

12,请简要说明一下switch的注意事项。

13,switch的穿透现象是什么,有什么好处,请简要叙述一下?

14,介绍一下循环控制中三种形式的跳转语句,并说明一下各自的作用。

15,请利用for循环控制的知识,写出打印下图三角形的代码。

16,定义一个二维数组,并循环打印出数组内的元素。

17,请说明一下代码中那些是实参与形参,以及方法的值传递和引用传递对应的运行结果。

public class test {
    public static void main(String[] args) {
        int n = 0;
        add(n);
        System.out.println(n);

        Cat c = new Cat();
        System.out.println(c.name);
        updateName(c);
    }

    public static void add(int n) {
        n++;
    }

    public static void updateName(Cat c) {
        c.name = "机甲暴龙战士";
    }
}

class Cat {
    String name = "小花";
}

18,请你定义一个集合用foreach循环遍历打印集合内容

19,请你简述一下collection集合体系。

20,简单讲讲StringBuffer和StringBuilder的区别。

21,说说成员变量和局部变量之间的区别。

22,请你说一下Java中面向对象的三大特证。

23,关键字this的作用是什么?

    public void goWith(String name) {
        //注意:this在方法中,谁调用这个方法this就代表谁!
        System.out.println(this.name + "正在和" + name + "比赛~");
    }

    public Car(String name, double price) {
        //注意:this在构造器中,代表构造器正在初始化的那个对象
        System.out.println(this);
        this.name = name;
        this.price = price;
    }

24,请同学根据以下代码谈谈面向对象的向上转型和向下转型。

(1)向上转型

public class test2 {
    public static void main(String[] args) {
        Fruit fruit = new Apple();
        fruit.show();
    }
}
class Fruit {
    public void show() {
        System.out.println("this is a fruit");
    }
}
class Apple extends Fruit {
    @Override
    public void show() {
        System.out.println("this is a apple");
    }
    public void test() {
        System.out.println("I am a apple");
    }
}

                                                          

(2)向下转型

Fruit fruit = new Apple();
Apple apple = (Apple) fruit;

class Orange extends Fruit {
    @Override
    public void show() {
        System.out.println("this is a Orange");
    }

    public void test() {
        System.out.println("I am a Orange");
    }
}
Fruit fruit = new Apple();
Orange orange = (Orange) fruit;

25,在Java中对象只能单继承,而在C++中对象可以多继承,请你谈谈自己对Java中接口的理解,接口对Java面向对象的作用。

26,Java中有四种访问控制修饰符,用来保护对于类、变量、方法以及构造方法的访问。还有非访问控制修饰符,请你各自列举一下。

27,通过下面代码块说出Java父类与子类的静态代码块,构造方法的执行顺序。

public class test2 {
    public static void main(String[] args) {
        Animal animal2 = new Dog();
    }

    static {
        System.out.println("这是类的静态代码块");
    }
}

class Dog extends Animal {
    public Dog() {
        System.out.println("子类的构造方法");
    }

    static {
        System.out.println("这是子类静态代码块");
    }
}

class Animal {
    public Animal() {
        System.out.println("父类的构造方法");
    }

    static {
        System.out.println("这是父类静态代码块");
    }
}

28,同学们在编写程序过程中避免不了需要异常处理,异常的处理方式通常有三种形式

其中:异常处理方式1 —— throws      

           异常处理方式2 —— try…catch…

两种方式运用的较多,你能简要说明一下这两种方式处理的特点吗?

29,小明在学习Java过程中对IO流不太理解,你能帮助他讲解下列的程序是怎么操作的吗?

public class ByteBufferDemo {
    public static void main(String[] args) {
        try (
                InputStream is = new FileInputStream("D:\\大学相关文件\\照片\\壁纸\\iTab-0.jpg");
                InputStream bis = new BufferedInputStream(is);
                OutputStream os = new FileOutputStream("D:\\大学相关文件\\照片/123.jpg");
                OutputStream bos = new BufferedOutputStream(os);

        ) {
            byte[] buffer = new byte[1024];
            int len; 
            while ((len = bis.read(buffer)) != -1) {
                bos.write(buffer, 0, len);
                System.out.println("复制完成了!");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

30,请你介绍一下递归算法和下图程序的执行流程。

public class test2 {
    public static void main(String[] args) {
        System.out.println(f(5));
    }

    public static int f(int n) {
        if (n == 1) {
            return 1;
        } else {
            return f(n - 1) * n;
        }
    }
}

31,Java中的IO流,需要经常添加输入和输出文件的路径,请你说明一下绝对路径和相对路径是什么样的。

32, 请你描述一下线程的几种状态分别是什么,以及他们之间的互相转换。

33,请你说说线程和进程之间的关系。

答案

1,

2,(1

(2)

(3)

3,略

4,

数组,类,接口被称为引用数据类型,共同特点是,他们的字面值并不是一个“值”而是一段地址。

5, (1) 数字、字母、下划线(_)和美元符($)   数字、关键字        (2) 小 大

6,

A -> 65        a -> 97

7  

8,(1)

9

10

11.   都是做分支操作的,if 的功能更加强大,适合做区间匹配,如果是值匹配的操作建议用 switch,格式清晰,性能较好。

12表达式类型只能是byte、short、int、char,JDK5开始支持枚举,JDK7开始支持String、不支持double、float、long。

case给出的值不允许重复,且只能是字面量,不能是变量。

不要忘记写break,否则会出现穿透现象。

13,(1)switch中没有写break,遇到了这个case会一直往下走,直到遇到break才会跳出适合做。

(2)多个值对应的case块的操作是相同的!可以穿透到一个位置集中处理,这样可以提高开发效率,降低代码重复。

14,(1)break只能在循环体内和switch语句体内时使用:

当break出现在循环体中的switch语句体内时,其作用只是跳出该switch语句体

当break出现在循环体内,但并不在switch语句体内时,则在执行break后,跳出本层循环体

(2)continue语句是针对break语句 的补充。continue不是立即跳出循环体,而是跳过本次循环结束前的语句,回到循环的条件测试部分,重新开始执行循环。

(3)从当前的方法中退出,返回到该调用的方法的语句处,继续执行;返回一个值给调用该方法的语句,返回值数据类型必须与方法的声明中返回值的类型一致,可以使用强制类型转换来使数据类型一致;return当方法说明中用viod声明返回值为空时,应使用这种格式,不返回任何值。

15

    public static void main(String[] args) {
        //控制层数
        for (int i = 1; i <= 5; i++) {
            //控制每层的空格数
            for (int j = 1; j <= 5 - i; j++) {
                System.out.print(" ");
            }
            //控制每层打印的*
            for (int k = 1; k <= i * 2 - 1; k++) {
                System.out.print("*");
            }
            System.out.print("\n");
        }
    }

16

17,

因为调用方法进行传参时分为值传递与引用传递。如果参数的类型是基本数据类型,那么就是值传递,是单向传递,只能从实参传给形参,不能形参传给实参,变量的作用域只在方法内,方法结束,变量内存释放。如果是引用数据类型,那么就是引用传递,值传递是实参把自己变量本身存的数值赋值给形参,引用传递是实参把自己变量本身存的对象内存地址值赋值给形参,形参的改变,已经在堆内存中对实参的改变。

18

    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("Java");
        list.add("Python");
        list.add("C++");

        for (String item : list) {
            System.out.println(item);
        }
    }

19

20深入理解String、StringBuffer和StringBuilder

21

22

23this作用:代表了当前对象的地址,可以访问当前对象的成员变量和成员方法。

24Java对象类型向上转型和向下转型

25JAVA基础——接口(全网最详细教程)

26

27,

28

29

public class ByteBufferDemo {
    public static void main(String[] args) {
        try (
                // 这里面只能放置资源对象,用完会自动关闭:自动调用资源对象的close方法关闭资源(即使出现异常也会做关闭操作)
                // 1,创建一个字节输入流管道与原文件接通
                InputStream is = new FileInputStream("D:\\大学相关文件\\照片\\壁纸\\iTab-0.jpg");
                // a.把原始的字节输入流包装成高级的缓冲字节输入流
                InputStream bis = new BufferedInputStream(is);
                // 2,创建一个字节输出流管道与目标文件接通
                OutputStream os = new FileOutputStream("D:\\大学相关文件\\照片/123.jpg");
                // b.把字节输出流管道包装成高级的缓冲字节输出流管道
                OutputStream bos = new BufferedOutputStream(os);

        ) {
            // 3,定义一个字节数组转移数据
            byte[] buffer = new byte[1024];
            int len; // 记录每次读取的字节数
            while ((len = bis.read(buffer)) != -1) {
                bos.write(buffer, 0, len);
                System.out.println("复制完成了!");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

30,方法调用自己的形式称为方法递归( recursion)。

递归算法三要素大体可以总结为:

  • 递归的公式
  • 递归的终结点
  • 递归的方向必须走向终结点

31绝对路径是带盘符的。相对路径是不带盘符的,默认到当前工程下寻找文件。

32

 

33线程与进程,你真得理解了吗

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值