Java基础
文章平均质量分 86
菠萝印象威
保持学习的习惯,保持乐观的态度。
展开
-
Java基础(六)--抽象类和接口
抽象类·普通类是一个完善的功能类,可以产生实例化对象,并且在普通类中可以包含有构造方法、普通方法、static方法、常量和变量等内容。·抽象类是指在普通类的结构中增加抽象方法的组成部分。抽象方法·抽象方法指没有方法体({})的方法,同时抽象方法还必须使用关键字abstract做修饰·拥有抽象方法的类就是抽象类,抽象类要使用abstract关键字声明exabstract class A{ public void fun(){//普通方法有方法体 System.out.println("存在原创 2021-04-12 23:38:48 · 138 阅读 · 0 评论 -
Java异常(二)
Error和Exception区别是什么1.Error类型的错误通常为虚拟机相关错误,如系统崩溃,内存不足,堆栈溢出等,编译器不会对这类错误进行检测,应用程序也不应对这类错误进行捕获,一旦这类错误发生,通常程序会被终止,仅靠应用程序本身无法恢复2.Exception类的错误是可以在应用程序中进行捕获并进行处理的,通常遇到这类错误,应对其进行处理,使应用程序可以继续正常运行。运行时异常和一般异常(受检异常)区别1.运行时异常包括RuntimeException类及其子类,表示JVM在运行期间可能出现的原创 2021-03-23 21:40:02 · 185 阅读 · 1 评论 -
Java异常(一)
异常简介提供的一种识别及响应错误的一致性机制异常机制可以使程序中异常处理代码和正常业务代码分离,提高程序健壮性,在有效使用异常的情况下,异常可以清晰地回答what,where,why这3个问题:异常回答了"什么"被抛出,异常堆栈跟踪回答了"在哪"抛出,异常信息回答了"为什么被抛出"Throwable1.Throwable是所有错误与异常的超类2.Throwable包含两个子类:Error和Exception,它们通常用于指示发生了异常情况3.Throwable包含了其线程创建时线程执行堆栈的快照原创 2021-03-23 21:36:59 · 131 阅读 · 0 评论 -
Java多线程(六)
CopyOnWriteArrayList用于哪些场景,优缺点CopyOnWriteArrayList是一个并发容器,是线程安全的。优点:当多个迭代器同时遍历和修改这个列表时,不会抛出ConcurrentModificationException,在CopyOnWriteArrayList中,写入将导致创建整个底层数组的副本,而原数组将保留在原地,使得复制的数组在被修改时,读取操作可以安全地执行。使用场景:适合读多写少的场景缺点:1.写操作需要拷贝数组,会消耗内存,如果原数组的内容较多的情况,可原创 2021-02-28 21:04:05 · 176 阅读 · 0 评论 -
Java多线程(五)
volatilevolatile关键字的作用volatile关键字保证了线程间的可见性和禁止指令重排。volatile提供happens-before的保证,确保一个线程的修改对其他线程是可见的。当一个共享变量被volatile修饰时,它会保证修改的值会立即被更新到主存,当其它线程需要读取时,它会去内存中读取新值。从实践角度而言,volatile的一个重要作用就是和CAS结合,保证了原子性,详细参考java.util.concurrent.atomic包下的类,比如AtomicIntegervola原创 2021-02-28 20:58:19 · 273 阅读 · 1 评论 -
Java多线程(四)
并发理论Java内存模型垃圾回收有什么目的,什么时候进行垃圾回收垃圾回收是在内存中存在没有引用的对象或者超过作用域的对象时进行的目的是识别并且丢弃应用不再使用的对象来释放和重用资源。如果对象的引用被置为null,垃圾收集器是否会立即释放对象占用的内存不会,在下一个垃圾回调周期中,这个对象将是被可回收的,也就是说并不会立即被垃圾收集器立刻回收,而是在下一次垃圾回收时才会释放其占用的内存。finalize()方法什么时候被调用?析构函数(finalization)的目的是什么1.垃圾回收器(ga原创 2021-02-28 20:52:15 · 222 阅读 · 2 评论 -
Java多线程(三)
如何停止一个正在运行的线程有三种方法1.使用退出标志,使线程正常退出,也就是当run方法完成后线程终止。2.使用stop方法强行终止,不推荐,因为stop和suspend及resume一样都是过期作废的方法。3.使用interrupt方法中断线程。interrupt和isInterrupted方法的区别interrupt:用于中断线程。调用该方法的线程的状态为:将被设置为"中断"状态注意:线程中断仅仅是线程的中断状态,不会停止线程。需要用户自己去监视线程的状态并做处理。支持线程中断的方法(也原创 2021-02-28 20:43:08 · 144 阅读 · 0 评论 -
Java多线程(二)
创建线程的四种方式1.继承Thread类2.实现Runnable接口3.实现Callable接口4.使用Executors工具类创建线程池继承Thread类步骤:1.定义一个Thread类的子类,重写run方法,将相关逻辑实现,run()方法就是线程要执行的业务逻辑方法2.创建自定义的线程子类对象3.调用子类实例的start()方法来启动线程ex:public class MyThread extends Thread{ @override public void run(){原创 2021-02-28 20:38:39 · 243 阅读 · 0 评论 -
Java多线程(一)
并发编程的优缺点优点:1.充分利用多核CPU的计算能力:通过并发编程的形式可以将多核CPU的计算能力发挥到极致,性能得到提升。2.方便进行业务拆分,提升系统并发能力和性能:多线程并发编程是开发高并发系统的基础,利用多线程机制可以大大提高系统整体的并发能力以及性能。面对复杂业务模型,并行程序会比串行程序更适应业务需求,而并发编程更能符合这种业务拆分。缺点:并发编程的目的是为了能提高程序的执行效率,提高程序运行速度,但并发编程并不总是能提高程序运行速度的,而且并发编程可能遇到很多问题,比如:内存泄原创 2021-02-28 20:33:03 · 234 阅读 · 1 评论 -
Java基础(五)
抽象类·普通类是一个完善的功能类,可以产生实例化对象,并且在普通类中可以包含有构造方法、普通方法、static方法、常量和变量等内容。·抽象类是指在普通类的结构中增加抽象方法的组成部分。抽象方法·抽象方法指没有方法体({})的方法,同时抽象方法还必须使用关键字abstract做修饰·拥有抽象方法的类就是抽象类,抽象类要使用abstract关键字声明exabstract class A{ public void fun(){//普通方法有方法体 System.out.println("存在原创 2021-02-21 23:21:36 · 101 阅读 · 0 评论 -
Java基础(四)
值传递当一个对象被当做参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,这是值传递为何只有值传递按值调用表示方法接收的是调用者提供的值,而按引用调用表示方法接收的是调用者提供的变量地址。一个方法可以修改传递引用所 对应的变量值,而不能修改传递值调用所对应的变量值,方法得到的是所有参数值的一个拷贝,方法不能修改传递给他的任何参数变 量的内容。值传递和引用传递的区别·值传递在方法调用时,传递的参数是按值的拷贝传递,传递的值是拷贝,传递后互不相关·引用传递在方法调用时,传递的原创 2021-02-21 23:12:01 · 157 阅读 · 2 评论 -
Java基础(三)
对象相等判断= =和equals区别= =:它的作用是判断俩个对象的地址是不是相等,即判断两个对象是不是同一个对象基本数据类型 = =比较的是值,引用数据类型= =比较的是内存地址(判断两个变量或实例是不是指向同一个内存空间)引用数据类型·类(class)·接口(interface)·数组([])equals():判断两个对象是否相等,有两种使用情况1.类没有重写equals()方法。则通过equals()比较该类的两个对象时,等价于通过"= ="比较两个对。2.类重写了equals原创 2021-02-21 23:04:53 · 219 阅读 · 0 评论 -
Java基础(二)
面向对象的三大特性1.抽象抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象,只关注对象有哪些属性和行为,不关注行为的细节2.封装将一个对象的属性私有化,同时提供一些可以被外界访问的属性方法3.继承使用已存在的类的定义作为基础建立新类,新类的定义可以增加新类的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类,继承可以方便地复用以前的代码重点1.子类拥有父类非private的属性和方法2.子类可以拥有自己的属性和方法,可以对父类进行扩展3.子类可以用自己的方式原创 2021-02-21 22:54:52 · 273 阅读 · 0 评论 -
Java基础(一)
数据类型基本数据类型数值(整数类型(byte short int long))字符型(char)布尔型(bool)引用数据类型类(class)接口(interface)数组([])修饰符修饰符 当前类 同包 子类 其他包private √ × × ×default √ √ × ×protect √ √ √ ×public √ √ √ √final finally finalize关键字区别final原创 2021-02-21 22:48:07 · 112 阅读 · 0 评论 -
Java常见误区
在学习Java之前我们要懂得一些Java的基础常识问题,如果一些细节不注意,你甚至连程序都无法运行,只能通过报错来查找问题,这样既考验了你的英文能力,又耽误了时间,所以,在学习之前需要弄清一些经常会遇到的错误原创 2020-09-20 16:32:45 · 483 阅读 · 0 评论 -
Java数组你想要的都在这里
本篇文章主要讲解Java数组的一些常用方法,并进行实例演示前言在Java中,数组可以说是比较重要的基础之一,它出现在Java的方方面面,不管是算法、数据结构中,都能经常看见它的身影,而这也成为了面试官经常考察应聘者的能力水平之一,所以,对数组的深入学习显得尤为重要。一.数组的定义数组简介:数组是用来存储固定大小类型元素的一种数据结构。数组的特点:1.数组的长度是固定的,数组一旦被创建,它的大小就是不可改变的。2.数组中的元素类型必须相同,不能出现混合类型。3.数组类型可以是基本数据类型和原创 2020-09-29 23:55:57 · 1048 阅读 · 0 评论