### Java基础知识大总结 #### 一、基础概念与特性 1. **Null的打印结果**:在Java中,如果尝试打印一个null值的对象引用,输出结果将会是`null`。 2. **字符串常量的拼接问题**:当在字符串中出现如`'10'`这样的表示时,并不会被解释为数值`10`,而是会被视为两个字符`'1'`和`'0'`组成的字符串。 3. **基本数据类型间的转换**:在进行如byte、short、char等基本数据类型的运算时,默认会转化为int类型来处理,这意味着这些类型之间无法直接进行转换,而需要通过显式的类型转换来进行。 4. **字符串拼接操作符“+=”与“=”的区别**:表达式`s += 1`等价于`s = s + 1`,但其内部执行过程略有不同。前者会先计算`s + 1`的结果,然后将该结果赋值给`s`;而后者直接将`s`的值与`1`相加后赋值给`s`。在某些情况下,这种区别可能导致编译器自动进行类型提升。 5. **重写toString方法**:为了更好地展示对象的信息,可以通过重写`toString`方法来自定义对象的字符串表示形式。这通常涉及到如何格式化对象的状态或属性,以便于调试或日志记录。 6. **compareTo方法的使用**:在使用`compareTo`方法比较数值类型(如`Integer`)时,需要注意区分`Integer`和基本类型`int`。对于基本类型,可以直接使用`<`、`>`等操作符进行比较。 7. **长度属性的理解**: - `String.length()`用于获取字符串的长度。 - 数组的`length`属性用于获取数组元素的数量。 - 需要注意的是,这些属性的返回值都是整数类型,且数组的长度属性是不可变的。 #### 二、类与对象的概念 8. **静态与非静态的区别**: - 静态成员(变量/方法):属于类本身,所有对象共享同一份拷贝。 - 非静态成员:每个对象各自拥有一份拷贝。 - 静态成员可以在没有创建对象的情况下访问,而非静态成员则需要先创建对象。 9. **final修饰符的作用**:`final`关键字用来声明常量或不可变的对象。一旦一个变量被声明为`final`,那么它的值就不能被改变。这包括: - 如果是基本数据类型,则该值不能改变。 - 如果是指向对象的引用,则该引用不能指向另一个对象。 10. **垃圾回收机制(GC)**: - 优点:自动管理内存,减少内存泄漏的可能性。 - 缺点:可能会导致程序运行时性能上的波动,尤其是在进行大规模的垃圾回收操作时。 11. **基本类型与包装类型的区别**: - Java支持两种类型的数据:基本类型(如int、double等)和引用类型(如Object、String等)。 - 对于基本类型,Java提供了对应的包装类型,例如int的包装类型为Integer。 - 包装类型提供了更多的功能,如转换、比较等操作。 12. **取模运算**:取模运算符`%`用于计算除法后的余数。对于正数来说,结果的符号与被除数相同;对于负数来说,结果的符号与被除数相同,这一点需要注意。 13. **逻辑运算符“&&”与“&”的区别**: - `&`:按位与运算符,在布尔表达式中表示逻辑与,同时可以应用于位操作。 - `&&`:短路与运算符,在布尔表达式中同样表示逻辑与,但在左侧表达式为假时,右侧表达式将不再计算。 14. **位运算符的应用**:位运算符如`|`、`&`、`^`等主要用于位级别的操作。例如,可以使用位或运算符`|`来设置某个位为1,使用位与运算符`&`来清除某个位,使用异或运算符`^`来翻转某个位。 15. **异常处理机制**:Java中的异常处理主要包括`try`、`catch`、`finally`语句块。`try`块用于包含可能抛出异常的代码,`catch`块用于捕获并处理异常,`finally`块则无论是否发生异常都会执行。 16. **数组与集合**:数组是一种存储固定大小的同类型元素的容器,而集合是一种存储可变数量元素的容器。数组的长度是固定的,而集合的大小可以动态扩展。 17. **实例初始化顺序**: - 默认构造函数调用父类默认构造函数。 - 显示构造函数调用父类构造函数。 - 实例变量初始化。 - 构造函数体内的代码。 - 构造函数的调用。 18. **左移位运算符**:`<<`运算符用于实现左移位操作,即将二进制位向左移动指定的位数。例如,`2 << 3`相当于将二进制位`10`向左移动三位,得到的结果是`16`。 19. **返回类型为void的方法**:在Java中,如果一个方法的返回类型声明为`void`,则意味着该方法不会返回任何值。因此,试图调用此类方法并获取返回值将会导致编译错误。 20. **对象的生命周期**: - 创建:通过`new`关键字创建对象。 - 初始化:调用构造函数完成对象的初始化。 - 使用:对象在程序中被使用。 - 销毁:当对象不再被引用时,垃圾回收器将其回收。 21. **默认值**:在Java中,每种数据类型都有默认值。例如,整型变量默认值为0,浮点型为0.0,布尔型为`false`,引用类型为`null`。 22. **枚举类型**:枚举类型是一种特殊的类,用于表示一组固定的常量。它不仅可以用来表示一组常量,还可以具有方法、构造函数等。 23. **线程状态模型**:Java线程有多种状态,包括新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)和死亡(Terminated)。线程的状态会随着执行过程中的各种事件而发生变化。 24. **同步机制**:为了确保多线程环境下的数据安全,Java提供了多种同步机制,包括`synchronized`关键字和`ReentrantLock`等。其中`synchronized`关键字可以用于修饰方法或者代码块,以实现对资源的独占访问。 25. **线程调度策略**:线程的调度遵循一定的策略,包括优先级调度和时间片轮转等。优先级高的线程更容易获得CPU时间,但最终所有线程都将会获得执行的机会。 26. **线程实现方式**:Java中实现线程主要有两种方式,一种是继承`Thread`类,另一种是实现`Runnable`接口。使用`Runnable`接口更为灵活,因为它允许一个线程执行多个任务。 27. **同步与互斥**:同步是指多个线程之间的协调工作,而互斥则是指同一时间内只有一个线程可以访问共享资源。Java提供了多种工具来实现同步和互斥,如`synchronized`关键字、`Lock`接口及其实现类等。 28. **字符串比较**:在Java中,字符串的比较可以使用`equals`方法或者`==`操作符。`equals`方法用于比较字符串的内容是否相同,而`==`操作符用于比较两个字符串引用是否指向同一个对象。 29. **类型转换**:在Java中,可以进行不同类型之间的转换,包括自动类型提升和强制类型转换。对于基本数据类型,自动类型提升是指将较低的数据类型转换为较高的数据类型,如`int`到`long`。强制类型转换则需要显式地将一个数据类型转换为另一个数据类型,如`(int) 3.14`。 30. **静态成员的特点**:静态成员是类级别的,即所有对象共享同一个静态成员。这意味着修改了一个对象的静态成员会影响其他对象。另外,静态成员可以通过类名直接访问,而无需创建对象。 31. **字符串的拼接与比较**: - 字符串的拼接使用`+`操作符。 - 字符串的比较使用`equals`方法。 - 使用`==`操作符比较字符串时,仅能判断它们是否引用同一个对象。 32. **引用与对象的关系**: - 引用:变量或标识符指向对象的地址。 - 对象:在内存中存储的数据和行为的集合。 - 对象的状态:由其字段(成员变量)的值组成。 - 对象的行为:由其方法定义。 33. **自动装箱与拆箱**:在Java中,可以自动将基本数据类型转换为对应的包装类型(装箱),也可以将包装类型转换回基本数据类型(拆箱)。 34. **类型转换规则**:在进行类型转换时,需要遵守以下规则: - 自动类型提升:将较低的数据类型提升为较高的数据类型。 - 强制类型转换:将较高类型的数据转换为较低类型的数据。 35. **方法重载与重写**:方法重载是在同一个类中定义多个同名但参数列表不同的方法;而方法重写发生在子类中,覆盖父类中的方法。 36. **代码块与作用域**:代码块是用来组织一组相关的语句,它可以定义在方法内部或类级别。作用域决定了变量的可见性和生命周期。 37. **转义字符**:在Java中,转义字符`\r`代表回车,`\n`代表换行。 38. **负数的表示**:在Java中,负数可以使用前缀`-`来表示,例如`-1`。 39. **类的加载机制**:Java中的类加载机制负责将类的二进制形式加载到内存中,并对数据进行校验、解析和初始化。 40. **线程生命周期的不同阶段**:线程在其生命周期内会经历不同的阶段,包括新建、就绪、运行、阻塞和终止。 41. **线程的实现方式**:Java中实现线程有两种主要方式:继承`Thread`类或实现`Runnable`接口。这两种方式各有优缺点,可以根据具体需求选择合适的方式。 42. **同步锁机制**:Java中提供了多种同步锁机制,如`synchronized`关键字、`ReentrantLock`等,用于解决多线程并发访问共享资源时的问题。 43. **线程的等待与休眠**: - `sleep`方法使当前正在执行的线程暂停一段时间,但不会释放所持有的锁。 - `wait`方法使当前线程进入等待状态,直到其他线程调用该对象的`notify`或`notifyAll`方法唤醒。 以上是对Java基础知识的一些总结,涵盖了从基本概念到高级特性等多个方面。掌握这些知识点将有助于更好地理解和应用Java编程语言。


















2.'10'编译会失败,必须为'1'0'
3.byte,short,char类型进行运算时会自动提升为int类型,且之间不进行转换.
4.s+=1 和 s=s+1不一样 因为第一个相当于s=(s的类型)(s+1),而第二个是两个对象类型会自动提升为int.
5.覆写toString方法原因:建立学生对象自定义的字符串表现形式
6.覆写compareTo方法时,返回的是"Integer"对象而不是"int"对象.
7.关于调用length()函数,什么时候加括号什么时候不加括号
String.length()方法,Array.length属性 总结:有括号的是方法,没括号的是属性
8.类变量和实例变量的区别?
类变量也叫静态变量,也就是变量前加一个static的变量
实例变量也叫对象变量,即没加static的变量
类变量和实例变量的区别在于:类变量是所有对象共有,其中一个对象将它值改变,其他对象得到的就是改变后的结果;而实例变量则属对象私有,某一个对象将其值改变,不影响其他对象;
9.final成员变量:这个变量一旦被初始化便不可改变,这里不可改变的意思对基本类型来说是其值不可变,而对于对象变量来说其引用不可再变,但引用变量所指向的对象中的内容还是可以改变的.
10.关于java内存中堆与栈的区别
优点:
栈比堆得存取速度要快,仅次于寄存器,栈数据可以共享.
缺点:
存在栈中的数据大小与生存期必须是确定的,缺乏灵活性.
11.关于java中的int和Integer的区别:
java中有两种基本数据类型,基本数据类型是机器能够直接识别的类型,每一种基本数据类型都有其对应的包装器类,int的包装器类就是Integer.
因为Integer封装了整型的基本操作,所有需要对数值有转换操作等就要用类,且一般情况下系统会自动进行转换.
12.取模运算:
符号与被除数相同
13.&和&&的区别:
&一直判断到结束
&&判断出结果后就不再进行判断
14.不使用第三方变量,将两个变量的值交换
提示:在位运算中,当一个数异或一个数两次后仍为原来那个数
15.类和抽象类和接口的区别
提示:提示抽象类不是接口,因为继承接口需要覆写接口中所有方法,而继承抽象类中只需要覆写需要的方法即可.
17.对于接口当中常见的成员,而且这些成员都有固定的修饰符
18.程序一:
public static void main(String[] args){
System.out.println(p());
}
public static void p(){
System.out.println("haha");
}
程序二:
public static void main(String[] args){
System.out.println(null);
}
两个程序编译都错误.
19.2*8用效率最高的算法计算结果:2<<3
20.如果函数中返回值为void,则不能打印.
21.对象实例构造函数顺序:属性默认初始化>属性显示初始化>静态代码块初始化>构造代码块初始化>构造函数初始化
22.一道关于初始化、new对象、super()调用的先后顺序的问题
顺序: class X extends Y{
8 Y b = new Y();
4 X(){
5 super();
10 System.out.print("X");
}
}
class Y{
int a = 19;
6 Y(){
7 9 12 System.out.print("Y");
}
剩余5页未读,继续阅读


- 粉丝: 27
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 电子竞赛-模拟数字电路设计基础
- 电力电子领域图腾柱PFC电路仿真:电压电流双闭环PI控制及参数设计
- 基于SMIC 180nm工艺的10bit 20MHz SAR ADC设计详解:原理解读、电路设计与实践演练 - Matlab
- 基于博途1200 PLC与HMI六层电梯控制系统的全面仿真与实现 教程
- 学习平台代码code.zip
- 路径规划中二维RRT算法与贝塞尔曲线平滑路径的应用及优化
- 电动汽车永磁同步电机电磁设计与最优控制研究:从有限元分析到ETRR优化策略 永磁同步电机
- 基于Simulink平台的永磁同步风力发电机仿真模型研究:动态参数调整与响应分析
- LCL三相并网逆变器:仿真与说明文件中的准PR比例谐振控制
- 机械故障诊断领域中基于Matlab的轴承内圈故障信号模拟及图像生成 - 噪声模拟 详细版
- 永磁同步电机无差预测电流控制解析
- 基于dq坐标电压电流双闭环PI控制的三相PWM整流器仿真模型及SVPWM调制的应用研究
- 电力电子领域MMC两种调制策略(NLM与CPS-PWM)实现3000V-5000V整流仿真及性能评估
- 基于博途1200 PLC与HMI的电梯控制系统仿真与实现:三层电梯的智能运行与管理
- 基于STM32F405的高频方波注入方案:永磁同步电机无感FOC控制及直接闭环启动技术
- 基于博途1200 PLC与HMI的四层电梯控制系统仿真设计与实现


