- chapter1.Java概述
- chapter2.基本程序设计
- chapter3.流程控制
- chapter4.面向对象与类
- chapter5.类的进阶设计
- chapter6.异常处理
- chapter7.常用类
- chapter9.线程与并发编程
- chapter11.网络编程
chapter1.Java概述
1.编写、运行 Java 程序的基本过程是怎样的?
(1) 在IDE中:用java语言编写代码,编译后执行
(2) 在文本编辑器中:编写代码后打开命令行,使用javac命令编译代码源文件(.java),编译成功则生成同名字节码文件(.class);使用java命令,JVM解释执行字节码文件。
2.Java 的跨平台性是如何实现的?
(1) 字节码作为中间代码: 将平台相关的细节隐藏起来,使代码具有平台无关性。
(2) JVM 作为虚拟机: 提供了一个统一的运行环境,将字节码翻译成目标平台的机器码。
3.Java 源文件和字节码文件的扩展名分别是什么?
.java
.class
4.使用 JDK 时应该如何配置环境变量 Path 和 Classpath,其目的是什么?
(1)
JDK路径->JAVA_HOME->Path->ClassPath
(2)
目的:为了让操作系统找到并执行java相关命令(path-javav/java),并让java程序能找到相关类文件(classpath-.class)
5.Java语言的主要特点
(1) 简单性:引用代替指针,提供自动垃圾回收机制,使程序员无需考虑内存管理
(2) 面向对象的程序设计:解决问题方式更接近人类固有思维
(3) 跨平台性:一次编译到处运行
(4) 安全性:强类型语言,不支持指针,提供异常处理机制
(5) 多线程性:Java语言运行时环境本身就是多线程的
(6) 动态性:调用类都是运行时动态的加载到内存
chapter2.基本程序设计
1.类名、方法名、常量、变量的命名习惯是什么?
习惯 | 词性 | |
---|---|---|
常量 | 全大写,下划线_分隔 | 定值,final修饰 |
类名 | 大驼峰 | n,概念/实体 |
方法名 | 小驼峰 | v,功能/作用 |
变量 | 小驼峰 | 变值 |
2.假设今天是星期二,用Java 表达式表示100天后将是星期几
int day=100%7+2;
3.Java 的注释有哪几种? 注释太多会不会影响程序的执行效率?
(1) 单行//,多行/**/,文档/** */
(2) 不会被编译成字节码,因此不会直接影响程序的运行
4.请找出下列数据中正确的字面值
字面量 | 判断 | 描述 |
---|---|---|
5_2534e+1 | √ | 下划线_可以作为数字分隔符,仅用于提高可读性,不影响数值本身。类似千分符 |
_2534.0 | × | 数字不能以下划线_开头 |
5_2 | √ | |
5_ | × | 下划线_不能单独存在,必须在数字之间 |
23.4e-2 | √ | |
39F | √ | |
40D | √ | |
5.整数会溢出吗?浮点数运算会导致溢出吗?溢出会导致什么后果?
(1) int/float运算都会溢出
(2) 计算结果错误;程序崩溃;数据损坏;安全漏洞...
chapter3.流程控制
1.接收从命令行输入的n个整数,并进行冒泡排序,最后将排好序的数据打印在屏幕上。
import java.util.Scanner;
public class test{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int[] arr=new int[n];
for(int i=0;i<n;i++)
arr[i]=sc.nextInt();
//BubbleSort
for(int i=0;i<n-1;i++)
for(int j=0;j<n-i-1;j++)
if(arr[j]>arr[j+1]){
int tmp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=tmp;
}
//Output
for(var v:arr)
System.out.print(v+" ");
sc.close();
}
}
2.下面程序段的输出结果是
for(int i=1;i<=20;i++){
if(i==20-i)
break;
if(i%2!=0)
continue;
System.out.println(i+" ");
}
Output:
2
4
6
8
chapter4.面向对象与类
1.简述面向对象的概念和基本特征。
(1) 概念:面向对象是一种程序设计方法。它将计算机程序视为一系列相互作用的对象,每个对象包含数据(成员变量),和操作数据的方法(成员函数)。
(2) 基本特征:封装+继承+多态。
- 封装:实现数据隐藏,分离数据的使用者和设计者
- 继承:实现代码的重用和扩展
- 多态:单一接口/方法具有不同的动作
2.Java有哪些访问权限修饰符?说明其权限范围。
3.什么是静态语句块,静态语句块的主要用处是什么?
(1) 是由static修饰的一组语句。当类第一次被使用时,static{ }会自动运行,且只运行一次。
(2) 执行一些初始化操作,以及类加载的准备工作
4.什么是方法重载,如何定位重载方法?
(1) 在一个类中定义多个方法名相同,参数列表不同的方法
(2) 编译器在调用方法时,根据参数类型、顺序、个数确定调用哪个重载方法。该过程被称为重载解析。
5.基本类型和对象类型的参数传递有何区别?
基本类型 | 对象类型 | |
---|---|---|
传递内容 | 值的副本 | 对象的引用(内存地址),形参实参指向同一地址 |
方法内修改 | 不影响原值 | 影响原对象 |
6.什么是包,包的作用是什么?
Java中组织类的机制,类似文件夹
作用:
- 组织相关源代码文件
- 避免命名冲突:提供层次命名空间,不同包内允许同名类,通过包名来区分
- 控制访问权限
- 模块化:将项目划分为不同的包,可实现代码的模块化开发,提高代码的复用性
7.简述 this 和 super 关键字代表的含义,以及各自的作用。
this | super | |
---|---|---|
含义 | 对当前对象的引用 | 对父类对象的引用 |
作用 | 调用当前对象本身的变量(与形参重名时)、方法 | 访问父类对象的成员,即使方法被子类重写 |
构造方法首行为this( )时,调用本身的构造函数 | 子类构造方法第一行为super( )时,调用父类构造方法 | |
方法内返回当前对象本身 | ||
8.类中定义的实例变量在什么时候会被分配内存空间?
创建对象时
9.什么是静态初始化块,它的特点是什么?与构造方法有什么不同?
与静态语句块本质相同,只是不同教材的用词习惯不同造成的差异
(1) static修饰的语句块。在类被第一次加载时自动运行,且只运行一次
(2) 特点:
- 执行顺序早于构造方法,且在所有对象创建之前
- 执行时机:类加载时,且只执行一次
- 作用域:是类一级成员,属于类,不属于对象
(3) 构造方法每创建一个对象就执行一次,作用域为实例对象
chapter5.类的进阶设计
1.什么是多态,使用多态有什么优点?
(1) 同一个方法在不同的对象上有不同的行为,具体分为运行时多态和编译时多态。实现运行时多态有三个条件:向上转型,方法重写,动态绑定。
(2) 优点:
- 可扩展性:通过继承和实现接口来添加新的子类,无需修改原有代码
- 可维护性:将公共方法定义父类,减少重复代码,便于维护
- 可读性:用多态将相关类组织成层次结构,使代码清晰易懂
2.将父类对象引用进行强制类型转换,转化成子类对象的引用,在什么情况下可以奏效?
在父类的引用实际指向的是一个子类对象时才能奏效
3.方法中定义的内部类(局部内部类)是否可以存取方法中的局部变量?
可以。
但前提是该局部变量必须为final/effectively final
chapter6.异常处理
1.什么是运行时异常? 什么是受检查异常?
运行时异常RuntimeException | 受检查异常CheckedException | |
---|---|---|
成因 | 程序逻辑错误 | 程序与外部环境交互 |
编译器要求捕获或声明 | 不强制 | 强制 |
举例 | 数组越界、空指针 | 文件找不到、网络连接失败 |
非受检查异常UncheckedException = RuntimeException + Error
2.Java处理异常的机制有哪些?
(1) 抛出异常:throw
检测到异常程序,创建一个合适的异常对象并抛出
(2) 声明异常:throws
定义方法时声明可能发生的异常
(3) 捕获处理异常:try-catch-finally结构捕获处理代码并运行
3.声明异常的目的是什么? 怎样声明一个异常?
(1) 方法可能出现异常,但该方法不想/不能自己处理这些异常,就用throws关键字声明。
(2) 格式如下:
返回类型 方法名([形参列表]) throws 异常类1,异常类2,... { 方法体 }
4.Java中的异常是如何进行分类的,怎样抛出一个异常?
使用throw关键字抛出:
throw new ExceptionType("Messages");
5.没有异常发生时,try-catch块会引起额外的系统开销吗?
会。
时间开销:额外的指令、查找异常处理表会消耗CPU时间
空间开销:异常对象、栈帧等占用内存空间
chapter7.常用类
1.什么是自动装箱、自动拆箱?
(1) 自动装箱:将基本数据类型自动转换为对应的包装类型
int num=10;
Integer ig=num;
(2) 自动拆箱:将包装类型自动转换为对应的基本数据类型
Integer ig=new Integer(1);
int num=ig;
2常用的遍历容器的方法有哪几种?
4种
ArrayList<Integer> arr=new ArrayList<>(5);
//普通for循环
for(int i=0;i<arr.size();i++)
System.out.println(arr.get(i));
//增强式for循环
for(var v:arr)
System.out.println(v);
//forEach
arr.forEach(o->{System.out.println(o)});
//迭代器
Interator<Integer> i=arr.iterator();
while(i.hasNext())
System.out.println(i.next());
chapter9.线程与并发编程
1.建立线程有几种方法?
3种
扩展Thread
实现Runnable接口
实现Callable接口
2.在多线程中,什么情况下需要引入同步机制?
多个线程同时访问共享资源时
chapter11.网络编程
教材超字数被老师删减了只有ppt有内容,故无课后参考题
标签:Java,简答题,int,方法,多态,对象,课后,异常 From: https://www.cnblogs.com/Weenz-y/p/18553773