简答题65分(理解)❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀看本章小结
读程序写结果45分 ❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀知道程序输出什么
填空102分(lambda)❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀知道程序关键点
编程310分(20~30行)❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀知道程序怎么写
❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀
1~13章,11、13章重点
参考资料《Java语言程序设计基础篇(原书第12版)》
❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀
第一章 常识(了解)
Q:Java的优缺点?
Java的优点:
-
跨平台性 “一次编写,到处运行”,这得益于Java字节码的设计,编译后的Java字节码可以在任何安装了Java虚拟机(JVM)的平台上执行。
-
面向对象的特性 Java是一种纯面向对象的编程语言,它支持继承、封装和多态等基本OOP概念。代码更加结构化、易于管理、易于复用。
-
自动内存管理 Java的垃圾回收机制(Garbage Collection)自动管理程序使用到的内存。系统会自动回收不再使用的内存区域,这大大减少了内存泄漏和其他相关错误的可能性。
-
丰富的标准库与社区支持
Java的缺点:
-
性能问题 Java应用运行在JVM上,相较于直接编译到机器码的语言(如C++),Java程序在运行时可能表现出较慢的速度。
-
内存消耗较大 Java对内存的使用相对较为慷慨,特别是其垃圾回收机制可能导致程序在运行时消耗更多的内存资源。
-
学习曲线较陡峭
-
代码复杂度问题 随着项目的增长,Java的面向对象特性有时也会导致代码结构变得过于复杂,尤其是在过度使用设计模式或框架的情况下。
Java的特点
简单的、面向对象的、分布式的、解释型的、健壮的、安全的、架构中立的、可移植的、高性能的、多线程的、动态的
Q:java编译生成的结果是什么,是不是可执行文件?
Java编译的结果不是可执行文件,而是字节码文件。
Java语言的编译过程具有其独特性,理解这一过程对于掌握Java语言的运行机制极为重要。
Java编译器(javac)将 Java 源文件(.java 文件)编译成字节码文件(.class 文件)。
这种字节码是一种中间表现形式,它包含了JVM指令,但这些指令并不直接被硬件识别。
这就是为什么常说Java程序是“编写一次,到处运行”的原因,正是这种与平台无关的字节码使得Java程序可以在不同的操作系统和架构上运行。
Q:java是解释型的,还是编译型的语言?
Java语言同时具有编译型和解释型两种语言的特点。
Java的执行过程涉及两个主要步骤:首先将Java源代码(.java文件)编译成字节码(.class文件),然后通过Java虚拟机(JVM)执行这些字节码。这个过程结合了编译型语言的编译步骤和解释型语言的解释执行方式,使得Java既具有编译型语言的特性,也具有解释型语言的特性。
❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀
第二章 基本程序设计(重在应用)
每个Java程序都是以类的声明开始的,在声明里类名紧跟在关键字class后面。
每个java应用程序都必须有一个类方法,程序从该方法处开始执行。
Q:JAVA与C的基本程序设计的区别?
java使用System.out来表示标准输出设备,用System.in来表示标准输入设备。
- 输入:println、printf、String.format
- 输出
import java.util.Scanner;
public class InputExample {
public static void main(String[] args) {
//创建了一个Scanner对象
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个整数:");
int number = scanner.nextInt();
System.out.println("您输入的整数是:" + number);
System.out.println("请输入一个浮点数:");
double floatingNumber = scanner.nextDouble();
System.out.println("您输入的浮点数是:" + floatingNumber);
System.out.println("请输入一个字符串:");
String inputString = scanner.next();
System.out.println("您输入的字符串是:" + inputString);
scanner.close();
}
}
Q:各数值类型在什么时候溢出?
System.currentTimeMillis()
作用
- 得到时间
- 计时
- 生成随机数
public class ShowCurrentTime{
public static void main(String[] args){
long totalMilliseconds=System.currentTimeMillis()
//计算总秒数和当前秒数
long totalSeconds=totalMilliseconds/1000
long currentSecond=totalSeconds%60
//计算分钟数和当前分钟数
long tatalMinutes=totalSeconds/60
long currentMinute=totalMinutes%60
//计算小时数和当前小时数
long totalHours=totalMinutes/60
long currentHour=totalHours%24
//显示
System.out.println("Current time is "+currentHour+":"+currentMinute+":"+currentSecond+"GMT");
}
}
❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀
第三章 选择(重在应用)
生成随机数
1. System.currentTimeMillis()
int number1=(int)(System.currentTimeMillis()%10);
int number2=(int)(System.currentTimeMillis()/10%10);
2. Math.random()
可以使用Math.random()来获得一个0.0到1.0之间的随机double值
int number1=(int)(Math.random()*10);
int number2=(int)(Math.random()*10);
Q:什么是异或?
不是;且;满足一个就行;非此即彼
重点示例:彩票
重点知识:操作符的优先级
❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀
第四章 数学函数、字符和字符串
三角函数
Unicode码 (统一码)
- 本书研究传统的16位Unicode(一个字符使用2个字节),用\u开头的4位十六进制数(一位十六进制数四位二进制数,,共有十六位)表示,范围从'\u0000'到'\uFFFF'。
- java的字符是可以直接存储汉字的。
- 统一码的写法'\uXXXX'
转义字符
字符和数值的转换
- 直接转,前面加一个强制转换
- 字符存储的就是数
String字符串的方法
字符串名.方法名
public class StringMethods {
public static void main(String[] args) {
// 创建两个字符串对象
String str1 = "Hello, World!";
String str2 = "hello, world!";
// 使用equals()方法比较两个字符串是否相等(区分大小写)
boolean isEqual = str1.equals(str2);
System.out.println("str1.equals(str2): " + isEqual); // 输出:false
// 使用equalsIgnoreCase()方法比较两个字符串是否相等(不区分大小写)
boolean isEqualIgnoreCase = str1.equalsIgnoreCase(str2);
System.out.println("str1.equalsIgnoreCase(str2): " + isEqualIgnoreCase); // 输出:true
// 使用compareTo()方法比较两个字符串的字典顺序
int compareResult = str1.compareTo(str2);
if (compareResult < 0) {
System.out.println("str1 comes before str2");
} else if (compareResult > 0) {
System.out.println("str1 comes after str2");
} else {
System.out.println("str1 and str2 are equal");
} // 输出:str1 comes before str2
// 使用compareToIgnoreCase()方法比较两个字符串的字典顺序,忽略大小写
int compareIgnoreCaseResult = str1.compareToIgnoreCase(str2);
if (compareIgnoreCaseResult < 0) {
System.out.println("str1 comes before str2 (ignore case)");
} else if (compareIgnoreCaseResult > 0) {
System.out.println("str1 comes after str2 (ignore case)");
} else {
System.out.println("str1 and str2 are equal (ignore case)");
} // 输出:str1 and str2 are equal (ignore case)
// 使用length()方法获取字符串的长度
int length = str1.length();
System.out.println("Length of str1: " + length); // 输出:13
// 使用charAt()方法获取字符串中指定位置的字符
char charAtPosition = str1.charAt(7);
System.out.println("Character at position 7 in str1: " + charAtPosition); // 输出:W
// 使用substring()方法获取字符串的子串
String subStr = str1.substring(7, 12);
System.out.println("Substring from position 7 to 12 in str1: " + subStr); // 输出:World
}
}
重载和重写(重定义、覆盖)的区别?
-
重载(Overloading):在同一个类中,方法名相同,但参数列表不同(参数类型、数量或顺序不同)。这样,我们可以根据传递给方法的参数来调用相应的方法。重载的方法返回类型可以相同或不同,但不能仅通过返回类型来区分重载方法。
-
重写(Overriding):在子类中,方法名、参数列表和返回类型都与父类中的方法完全相同。这样,我们可以在子类中重新定义父类的行为。重写的方法必须具有相同的访问修饰符(如public、protected或private),并且不能抛出比父类方法更宽泛的异常。
// 父类
clas