Java基础知识
Java基础知识总结
唐宋元明清Pro
这个作者很懒,什么都没留下…
展开
-
线程同步——使用(synchronized)关键字
1.需要线程同步的原因:Java 中允许多线程并行访问,同一时间段内多个线程同时完成各自的操作。但是多个线程同时操作同一个共享数据时,可能会导致数据不准确的问题。2.线程同步的方法:可以通过 synchronized 关键字修饰方法实现线程同步,每个Java 对象都有一个内置锁,内置锁会保护使用 synchronized 关键字修饰的方法,要调用该方法就必须先获得锁,否则就处于阻塞状态。3。synchronized 关键字可以修饰实例方法,也可以修饰静态方法,两者在使用的时候是有区别的。(1)给实原创 2022-04-14 15:39:16 · 1786 阅读 · 1 评论 -
Java 多线程调度
一、线程休眠让当前线程暂停执行,从运行状态进入阻塞状态,将 CPU 资源让给其他线程的调度方式,通过 sleep() 来实现。sleep(long millis),调用时需要传入休眠时间,单位为豪秒。注意:在外部调用需要注意,休眠一定要放在启动之前。直接通过静态方式调用 sleep 方法可以使主线程休眠。sleep 是静态本地方法,可以通过类调用,也可以通过对象调用,方法定义抛出 InterruptedException(InterruptedException 继承 Exception,外部调用原创 2022-04-12 10:12:46 · 923 阅读 · 0 评论 -
Java 线程的状态
线程共有 5 种状态,在特定的情况下,线程可以在不同的状态之间切换:创建状态:实例化一个新的线程对象,还未启动。就绪状态:创建好的线程对象调用 start 方法完成启动,进入线程池等待抢占 CPU 资源。运行状态:线程对象获取了 CPU 资源,在一定的时间内执行任务。阻塞状态:正在运行的线程暂停执行任务,释放所占用的 CPU资源,并在解除阻塞状态之后也不能直接回到运行状态,而是重新回到就绪状态,等待获取 CPU 资源。终止状态:线程运行完毕或因为异常导致该线程终止运行。线程状态之间的转换图:原创 2022-03-02 15:28:58 · 242 阅读 · 0 评论 -
Java 中线程的使用
Java 中使用线程有两种方式:一、继承 Thread 类1、创建自定义类并继承 Thread 类。2、重写 Thread 类中的 run 方法,并编写该线程的业务逻辑代码。public class MyThread extends Thread { @Override public void run() { // TODO Auto-generated method stub //定义业务逻辑 for(int i = 0;i<1原创 2022-02-23 16:55:33 · 1227 阅读 · 0 评论 -
Java 常见异常与处理
一、异常的类型1、Error 是指系统错误,JVM 生成,编写的程序无法处理。2、Exception 指程序运行期间出现的错误,编写的程序可以对其进行处理。try{ //可能抛出异常的代码}catch(Exception e){ //处理异常}finally{ //必须执行的代码}二、常见的异常:1、ArithmeticException 表示数学运算异常2、ClassNotFoundException 表示未定义异常3、IllegalArggumentEx原创 2022-02-22 17:13:35 · 376 阅读 · 0 评论 -
Java 类、抽象类和接口
接口:就是将程序中的业务模块进行分离,以接口的形式去对接不同的业务模块。类:类是一个模板,它描述一类对象的行为和状态。抽象类:拥有抽象方法的类。一、面向接口编程的优点:当用户需求变更时,只需要切换不同的实现类,而不需要修改串联模块的接口,减少对系统的影响。1、能够最大限度实现解耦合,降低程序的耦合性。2、使程序易于扩展。3、有利于程序的后期维护。二、接口和抽象类的区别:1、抽象类:一个类中一旦存在没有具体实现的抽象方法时,那么该类就必须定义为抽象类,同时抽象类允许存在非抽象方法。2、接口原创 2022-02-22 16:23:27 · 229 阅读 · 0 评论 -
Java 包装类
包装类是 Java 提供的一组类,专门用来创建 8 种基本数据类型对应的对象,一共有 8 个包装类,存放在 java.lang 包中,基本数据类型对应的包装类。产生:构造函数生成的对象。意义:包装类可以赋null值,基本数据类型不可以赋null值。装箱和拆箱是包装类的特有名词,装箱是指将基本数据类型转为对应的包装类对象,拆箱就是将包装类对象转为对应的基本数据类型。一、装箱的方法:1、public Type(type value)2、public Type(String value)/publi原创 2022-02-22 16:02:40 · 115 阅读 · 0 评论 -
Java中 equals 和 == 的区别
equals方法最初是在所有类的基类Object中进行定义的,源码是:public boolean equals(Object obj) { return (this == obj); }由equals的源码可以看出这里定义的equals与是等效的(Object类中的equals没什么区别),不同的原因就在于有些类(像String、Integer等类)对equals进行了重写。 但是没有对equals进行重写的类(比如我们自己写的类)就只能从Object类中继承equals方法,原创 2022-02-22 15:30:23 · 223 阅读 · 0 评论 -
Java 抽象方法和抽象类
如果一个方法只有方法的声明而没有具体的方法实现,这个方法就叫做抽象方法,Java 中的抽象方法需要使用 abstract 关键字来修饰(或使用没有方法体的普通方法)。public abstract void buyBook();public void buyBook() {};一旦类中定义了抽象方法,则该类也必须声明为抽象类,需要在类定义处添加 abstract 关键字。public abstract class Member { public abstract void buyBo原创 2022-02-18 17:29:30 · 824 阅读 · 0 评论 -
Java 多态及优点
多态是同一个行为具有多个不同表现形式的能力,可以理解成同一个接口,使用不同的实例而执行不同操作。优点:消除类型之间的耦合关系可替换性可扩充性接口性灵活性简化性原创 2022-02-18 17:15:59 · 468 阅读 · 0 评论 -
Java 方法的重载与重写
子类在继承父类方法的基础上,对父类方法重新定义并覆盖的操作叫做方法重写(构造方法不能被重新)。函数或者方法有相同的名称,但是参数列表不相同,这样的同名不同参数的函数或者方法之间,互相称之为重载。一、方法重写的规则:1、父子类的方法名相同。2、父子类的方法参数列表相同。3、子类方法的返回值与父类方法返回值类型相同或者是其子类。4、子类方法的访问权限不能小于父类。二、方法重写 和 方法重载的区别:1、位置:方法重写在子类中对父类方法进行重写,方法重载是在同一个类中。2、方法名:方法重写相同,方原创 2022-02-18 17:01:42 · 2487 阅读 · 0 评论 -
Java 访问权限修饰符
访问权限修饰符:public > protected > 默认修饰符 > private。原创 2022-02-18 16:44:07 · 134 阅读 · 0 评论 -
Java 构造方法及作用
构造函数是一种特殊的方法,普通方法是用来描述某个动作的,构造方法是用来创建对象的。1、作用:创建对象。2、创建规则:方法名必须与类名一致,不需要定义返回值类型。构造函数可分为有参构造和无参构造,有参构造是指带参数的构造函数,无参构造是指没有参数的构造函数。任何一个类都默认自带一个无参构造函数,如果手动在类中定义一个有参构造,则会覆盖默认的无参构造,需要手动再次定义无参构造。...原创 2022-02-18 14:30:54 · 1980 阅读 · 0 评论 -
Java中类和对象的关系
类和对象的关系:一、每个对象都有特定的特征:1、属性。2、方法。属性指的是对象的静态特征,方法用来描述对象的动态特征。对象是用来描述客观存在的一个实体,该实体是由一组属性和方法构成。二、类是与对象紧密结合的另外一个概念,类是产生对象的模版,所有的对象都是通过类来创建的。二者的关系:类是对象的抽象化描述,这些对象具有相同的特征和动作(属性和方法)。对象是类的具体实例。Java 程序是以类位组织单元,程序运行时的主体是通过类创建的具体对象。例:小明是学生,学生是类,小明是对象。...原创 2022-02-18 11:43:05 · 3458 阅读 · 0 评论 -
Java数据类型转换
数据类型转换分两种:1.自动转换Java 可以自动对某些数据类型进行自动转换。规则:只能由低字节向高字节进行转换,反之则不行。byte->short->int->long->float->double2.强制类型转换Java 无法自动转换的数据类型,开发者可以通过强制手段进行转换。一般来讲强制类型转换可能会造成精度损失。double num = 10.0;int num2 = (int)num;...原创 2022-01-12 10:43:30 · 131 阅读 · 0 评论 -
if...else...与switch...case区别
1.与if…else…不同的是,switch…case只能完成等值判断,无法完成判断大小。2.switch 只支持 int、short、byte、char、枚举、String 类型,不支持 boolean 类型。基本语法:switch(变量){ case 值1: //业务代码 System.out.println("结果1"); break; case 值2: //业务代码 System.out.print原创 2022-01-17 10:44:39 · 549 阅读 · 0 评论 -
while、do-while、for 三种循环的区别
while、do-while、for 3种循环的区别:一.相同点:1.都遵循循环四要素,初始化循环变量、循环条件、循环体、更新循环变量。二.不同点:1.while 和 do-while 适用于循环次数不确定的业务场景;for 适用于循环次数确定的场景。2.while 和 for 都是先判断循环条件,再执行循环体;do-while 先执行循环体,再判断循环条件。...原创 2022-01-17 11:03:59 · 11896 阅读 · 0 评论