JavaSE知识点总结

Java基础知识点汇总

一、Java基础

一、  基本知识
1.  JDK和JRE的区别
答:JDK是java语言开发工具包,包含JRE和开发工具(javac.exe等);JRE是java语言的运行环境,包含JVM和核心类库;JVM是java虚拟机,保证了java的跨平台性。

2.  JVM跨平台吗?
答:JVM不具有跨平台性,不同的操作系统所对应的JVM不一样。正是因为JVM的不跨平台,才能够使java语言具有跨平台性。

3.  保留字是什么?
答:保留字是还未使用的关键字,可能在java以后的版本中使用。有goto和const4.  java语言的特点?
答:完全面向对象,跨平台性,开源,简单易学,安全可靠,高性能,分布式处理,多线程,健壮性,多态。

5.  main是关键字吗?
答:不是的。main是主函数的名字,能够被虚拟机识别,是程序执行的入口。

6.  path和classpath的区别?
答:path环境变量配置的是可执行文件.exe的执行路径;能够在不同盘符下访问path路径下的可执行文件。Classpath配置的java语言编译后生成的字节码文件的执行路径。

7. 计算机最基本的存储单位是:字节(byte)
   计算机能直接识别的进制是:二进制

8进行运算的时,变量和常量有什么区别?
答:变量在运算过程中的值是变化的,可以被多次赋值。常量则是固定的。

9标识符的组成?以及命名规则?
答:标识符有26个字母的大小写,09,_和$组成。
    命名规则:不能使用关键字,不能数字开头,严格区分大小写,要见名知义。
    函数名和变量名如果是多个单词组成,第一个单词的首字母小写,其余首字母大写。
    类名和接口名如果是多个单词组成,首字母全部大写。
    包名全部小写。
    常量名全部大写,如果是多个单词,用_隔开。

10.变量数据类型分为哪几种?如何使用变量?
答:基本数据类型:整形:包括byteshortintlong。浮点型:包括float、doble。
字符型;char;布尔型:boolean。
引用数据类型:数组、类、接口。
变量需要先定义,再赋值,才能使用。

11.常量分为哪几种?
答:自定义常量和字面值常量。自定义常量是我们自己通过final修饰定义的常量。字面值常量包括整数、小数、布尔、字符、字符串。

12.byte的范围多少?char的范围多少?
答:byte范围-128127char范围065535.

13. ASCII码表中 字符 '0'  , 'a' , 'A' 分别对应int类型的值是多少.
答:0在表中对应的值是48,a对应的是97;A对应的是65.

14. long8个字节,float4个字节,为什么longfloat小?
答:底层采用的运算规则不一样。

15. 以取值范围的大小排列数据的基本类型.
答:double>float>long>int>char>short>byte

16.+=、-=、这些运算符内隐含了强制类型转换。

17.++和—的使用?
答:单独使用的时候,在前在后都一样。
    参与运算的时候,在前是先自加或者自减,然后再用这个结果参与运算。在后是先参与运算,再进行自加或者自减。

18. 逻辑或 " | " 和 短路或 " || "有什么区别?
答:|不管前面的结果是真是假后面的都会运算,||前面为真后面的不参与运算。但是结果是一样的。

19. 逻辑与 " & " 和 短路与 " && " 由什么区别?
答:&不管前面的结果是真是假后面的都会运算,&&前面为假后面的不参与运算。但是结果是一样的。

20.Math.round原理是什么?
答:先加0.5,然后再取floor值。

21.生成随机数的方法?
答:第一种:Random类中的方法;第二种Math.random()方法,生成的是0.01.0范围直接的小数。

22.ifelse..和三元表达的区别
答:能用三元表达式写的就能用if语句写,但是能用if语句写的,三元表达式不一定能写。三元表达式必须要有一个结果。

23.while、do whilefor的区别?
答:do while语句是先性后判断,whilefor先判断后执行。
    for循环结束后,其中定义的初始化条件不能再使用。

24.ifswitch区别?
答:if1.对具体的值进行判断。2.对区间判断。3.对运算结果是boolean类型的表达式进行判断。
switch: 1.对具体的值进行判断。2.值的个数通常是固定的  

25. switch语句的表达式可以放什么?
答:byteshortintchar。JDK1.5以后可以使用枚举,1.7之后可以使用String。

26. 死循环的两种写法.
答:while(true)  和  for(;;)

27. breakcontinue的区别
答:break是完全跳出循环,不再执行循环体的代码。也可以用在switch语句中。Continue是提前结束本次循环,进入下次循环。Return是结束方法。

28.switchbreak可以省略吗?default可以省略吗?
答:break在最后一个可以省略,其他的不要省略。Default可以省略。

29:方法重载和方法重写的区别?
答:方法重载是在同一个类中出现同名方法,参数列表不同,与返回值类型无关。
    方法重写是在子父类间,子类出现和父类声明完全相同的方法时,就成为方法重写。重写要求返回值必须相同或者有子父类关系。

30.方法的注意事项:
答:要明确方法的返回值类型,明确方法的参数列表。

31.方法的调用?
答:有返回值时可以单独调用,但是没有意义;也可以放在输出语句中;可以赋值给变量。无返回值直接调用即可。

32.数组的定义格式?
答:int[] arr =new int[5];int arr[]= new int[5];
int[] arr = new int[]{
  
  1,5,6,7,⋯} int[] arr = {
  
  23,6,8,9⋯}
二维数组
String[][] arr = new String[3][];
Syso(arr[0])  打印的结果是null33.数组的默认值?
答;整形的默认值是0,引用数据类型是nullboo
<think>首先,用户请求的是关于JavaSE核心知识点的详细总结。系统指令要求我使用中文回答,并遵循特定的格式规则,比如行内数学表达式用$...$,独立公式用$$...$$,但在这个上下文中,JavaSE知识点可能不涉及数学表达式,所以我可以忽略那部分,除非必要。 用户提供了几个引用:[^1]是关于Java多线程的,[^2]是关于基础语法中的字符串操作,[^3]是关于字符串类的不可变性。这些引用似乎是站内内容,但用户说“上述引用仅供参考,并不是用户真正的需求”,所以我需要基于用户的问题来回答,而不是直接依赖这些引用。 用户的问题:“我想获取JavaSE知识点的详细总结 请问JavaSE 核心知识点总结 最新详细”。核心是提供JavaSE核心知识点的详细总结。 根据系统指令,我还需要生成相关问题。在回答末尾添加§§相关问题§§部分。 结构我的回答: 1. **回答结构清晰**:逐步解决问题。既然用户要总结,我应该组织内容逻辑清晰。 2. **保证真实可靠**:基于我的知识库,JavaSE包括基础语法、面向对象、集合框架、异常处理、IO流、多线程、网络编程等。 3. **使用中文**:整个回答用中文。 4. **引用标识**:在引用的段落末尾自然地添加引用标识,如[^1]。但用户提供的引用可能不直接相关,所以我应该只在必要时引用,否则基于通用知识。 用户提供的引用: - [^1]: 关于多线程学习建议。 - [^2]: 关于字符串操作,如contains, indexOf, 不可变性等。 - [^3]: 关于String类的不可变性解释。 我可以整合这些,但用户说这些仅供参考,所以我不应该过度依赖。而是提供全面的JavaSE总结。 大纲JavaSE核心知识点: - 基础语法:变量、数据类型、运算符、控制流等。 - 面向对象编程:类、对象、继承、多态、封装、抽象类、接口等。 - 异常处理:try-catch-finally, throw, throws。 - 集合框架:List, Set, Map等接口和实现类。 - IO流:File, InputStream, OutputStream, Reader, Writer等。 - 多线程:Thread类, Runnable接口, 同步机制。 - 网络编程:Socket编程。 - 其他:字符串处理、泛型、注解等。 确保是最新详细:JavaSE版本,假设是Java 8或更高,因为它是主流。包括lambda表达式、stream API等。 步骤: 1. **引言**:简要介绍JavaSE。 2. **分节详细总结**: - 基础语法 - 面向对象 - 异常处理 - 集合框架 - IO流 - 多线程 - 其他关键 3. **结尾**:总结并添加相关问题。 在引用段落末尾添加引用标识:例如,如果我从用户提供的引用中取内容,就加[^1]等。但用户说“并不是用户真正的需求”,所以或许我应该创建自己的引用或基于知识添加。为了安全,我可以只在直接引用时加,否则不加。 生成相关问题:在§§相关问题§§部分,列出3-5个相关问题。 最终回答结构: - 清晰标题或分段。 - 使用代码块如果涉及代码示例。 - 自然添加引用标识。</think>### JavaSE 核心知识点详细总结 JavaSEJava Standard Edition)是Java平台的标准版,用于开发桌面应用程序、命令行工具和基础服务。它涵盖了Java语言的核心特性和API,是学习Java的基础。本文基于最新Java版本(如Java 11或17)进行总结,内容逻辑清晰、真实可靠。以下按核心模块逐步分解,每个模块包含关键概念、语法示例和注意事项。部分内容参考站内资源,引用标识已自然添加[^1][^2][^3]。 #### 1. **基础语法** Java的基础语法包括变量、数据类型、运算符和控制流结构,是编程的起。 - **变量与数据类型**:Java是强类型语言,变量需声明类型。基本数据类型包括`int`、`double`、`char`、`boolean`等;引用类型如`String`、数组。例如: ```java int age = 25; // 整型变量 String name = "Java"; // 字符串引用类型 ``` - **运算符**:算术运算符(`+`、`-`、`*`、`/`)、关系运算符(`==`、`>`、`<`)、逻辑运算符(`&&`、`||`)。 - **控制流**:`if-else`、`switch`、循环(`for`、`while`)。示例: ```java if (age > 18) { System.out.println("Adult"); } else { System.out.println("Minor"); } ``` - **注意事项**:变量作用域限制在代码块内;避免隐式类型转换错误;使用`final`关键字定义常量。 #### 2. **面向对象编程(OOP)** OOP是Java的核心,强调封装、继承、多态和抽象。 - **类与对象**:类定义模板,对象是实例。示例: ```java public class Person { private String name; // 封装:私有字段 public Person(String name) { this.name = name; } // 构造器 public void speak() { System.out.println("Hello, " + name); } // 方法 } Person p = new Person("Alice"); // 创建对象 p.speak(); // 输出: Hello, Alice ``` - **继承**:使用`extends`关键字,子类继承父类属性和方法。支持方法重写(`@Override`)。 - **多态**:父类引用指向子类对象,实现动态绑定。 - **接口与抽象类**:接口(`interface`)定义契约,Java 8+支持默认方法;抽象类(`abstract class`)提供部分实现。 - **注意事项**:优先使用组合而非继承;避免过度抽象;接口用于多继承场景。 #### 3. **异常处理** 异常处理机制确保程序健壮性,通过`try-catch-finally`、`throw`和`throws`管理错误。 - **异常类型**:`RuntimeException`(非检查异常,如`NullPointerException`)和`Exception`(检查异常,需显式处理)。 - **示例**: ```java try { int result = 10 / 0; // 抛出ArithmeticException } catch (ArithmeticException e) { System.out.println("Error: " + e.getMessage()); } finally { System.out.println("Cleanup done"); } ``` - **注意事项**:自定义异常继承`Exception`;避免空catch块;资源管理用try-with-resources(Java 7+)。 #### 4. **集合框架** 集合框架提供动态数据结构,位于`java.util`包。 - **核心接口**:`List`(有序,可重复,如`ArrayList`)、`Set`(无序,唯一,如`HashSet`)、`Map`(键值对,如`HashMap`)。 - **示例**: ```java List<String> list = new ArrayList<>(); list.add("Java"); list.add("Python"); System.out.println(list.get(0)); // 输出: Java Map<String, Integer> map = new HashMap<>(); map.put("Age", 30); ``` - **注意事项**:线程不安全集合需同步;使用泛型避免类型错误;Java 8+引入Stream API进行函数式操作。 #### 5. **IO流** IO流处理输入输出,分为字节流(`InputStream`/`OutputStream`)和字符流(`Reader`/`Writer`)。 - **核心类**:`File`用于文件操作,`BufferedReader`用于缓冲读取。 - **示例**(读取文件): ```java try (BufferedReader reader = new BufferedReader(new FileReader("file.txt"))) { String line; while ((line = reader.readLine()) != null) { System.out.println(line); } } catch (IOException e) { e.printStackTrace(); } ``` - **注意事项**:使用try-with-resources自动关闭资源;区分字节流(二进制数据)和字符流(文本);NIO(New IO)提供高效通道操作[^1]。 #### 6. **多线程** 多线程支持并发编程,通过`Thread`类和`Runnable`接口实现。 - **创建线程**:继承`Thread`或实现`Runnable`。示例: ```java class MyThread extends Thread { public void run() { System.out.println("Thread running"); } } new MyThread().start(); ``` - **同步机制**:`synchronized`关键字、`Lock`接口保证线程安全。 - **线程池**:使用`ExecutorService`管理线程资源。 - **注意事项**:避免死锁;使用`volatile`保证可见性;优先用并发工具类如`ConcurrentHashMap`。学习时多写代码调试,观察输出以理解线程行为[^1]。 #### 7. **字符串处理** `String`类是不可变类,一旦创建,内容不可变,修改会生成新对象[^3]。 - **常用方法**:`contains("Java")`检查子串,`indexOf("Java")`获取首次位置[^2]。 - **性能优化**:大量拼接用`StringBuilder`(可变,高效)而非`+`操作符。 - **示例**: ```java String s = "Hello"; s = s.concat(" World"); // 生成新对象 StringBuilder sb = new StringBuilder(); sb.append("Java").append("SE"); // 高效修改 ``` - **注意事项**:比较字符串用`equals()`而非`==`(后者比较地址);字符串池复用直接赋值字符串,减少内存开销[^2]。 #### 8. **其他关键** - **泛型**:提供类型安全,如`List<String>`,避免运行时错误。 - **注解**:元数据标记,如`@Override`,用于编译检查或框架(如Spring)。 - **Lambda表达式**(Java 8+):简化函数式编程,示例:`list.forEach(item -> System.out.println(item))`。 - **模块系统**(Java 9+):通过`module-info.java`管理依赖。 JavaSEJava生态的基础,掌握这些核心知识点后,建议结合项目实践加深理解。遇到问题时,查阅Java官方文档或可靠教程资源[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值