
Java基础
Vartimes
这个作者很懒,什么都没留下…
展开
-
JUC并发编程-常用辅助类
StampedLock是一种比ReentrantReadWriteLock效率更高的锁,他是基于乐观锁的思想,也就是多个线程一开始在读的时候并不加锁,只有当当数据被其他线程修改后才会加读锁。原创 2022-07-18 13:30:01 · 206 阅读 · 0 评论 -
JUC并发编程-锁原理
所谓aba问题是指,一个线程把某个值从a改成b,最后又改回a,而另一个线程在获取该值时无法感知到它被修改过,所以依然能够进行cas操作,AtomicReference是无法解决该问题的,AtomicStampedReference是可以解决的,通过版本管理。jdk1.6开始synchronized进行了优化,因为monitor本身是一个重量级锁(需要用户态和核心态的转换),所以1.6开始进行了一个锁膨胀(无锁->偏向锁->轻量级锁->重量级锁)以及锁消除,锁粗化,自旋优化。.........原创 2022-07-17 15:59:19 · 492 阅读 · 0 评论 -
java多线程
使用yiled方法和设置优先级最终并不能真正控制线程的调度,决定权在调度器那里。原创 2022-07-15 11:44:07 · 618 阅读 · 0 评论 -
java集合框架
1.集合架构图 2.Collection常用功能 3.迭代器iterator,因为不同集合的存取数据方式不一样,所以迭代器的出现提供了通用的取数方法 4.迭代器原理 5.List接口,三大特点:有序的,即存储和取出顺序相同,可以重复,含有特有的包含索引的方法. 6.ArrayList集合,非同步,线程不安全 7.LinkedList集合,非同步,线程不安全 add类方法 get类方法 remove类方法 8.Vector集合,底层也是数组,同步,线程安全9.Set接口,无序,不重复.非同步,不能使用for循原创 2022-07-14 16:02:20 · 106 阅读 · 0 评论 -
java泛型
1.不使用泛型,默认存储Object类型,Object可以存贮任意类型元素,例如存储整型和字符串,当需要使用字符串的方法时,就会把所有元素全部转化成字符串,这时整型转换就会出现类型转化异常,而使用泛型时存储元素类型就会确定,不需要进行转型,如果不合法编译期间就会报错,并且真正数据类型在使用时才确定,这样不写死更灵活. 2.定义和使用含有泛型的类 3.定义和使用含有泛型的方法 4.定义和使用含有泛型的接口具体类型由实现类确定 接口使用什么泛型,实现类就使用什么泛型 5.泛型通配符 6.泛型通配符的受限..原创 2022-07-13 16:47:56 · 257 阅读 · 0 评论 -
java异常
1.异常的概念 2.java如何如理异常 3.java异常分类 4.RuntimeException运行时异常 5.CheckedException已检查异常 try-catch-finally处理异常 throws抛出异常 6.自定义异常 7.异常总结原创 2022-07-13 13:53:53 · 244 阅读 · 0 评论 -
java注解
1.jdk中预定义的一些注解 2.自定义注解 2.元注解 3.在程序中使用注解 4.小案例,使用注解检查程序异常结果 5.总结原创 2022-07-13 11:23:23 · 105 阅读 · 0 评论 -
java反射机制
1.获取class对象的三种方式 2.class对象获取常见功能 获取filed 获取constructor获取method原创 2022-07-12 23:59:58 · 89 阅读 · 0 评论 -
java8-stream流
1.对于一个集合来说,要取出某一些特征元素,只能使用传统的for循环进行线性遍历,如果需要再次遍历,就要再次从头循环,显示循环只是方式,取数才是目的,stream是lambda的衍生物,只关注程序目的,可以让代码更优雅。 2.流式思想3.获取流把collection或者数组转化为流4.stream的常用方法分为延迟方法和终结方法,延迟方法返回继续返回一个可操作的stream,终结方法后不再支持链式调用。 forEach方法 过滤filter方法注意: stream流只能被使用一次,当数据流转到下一个流时,原创 2022-07-12 17:14:56 · 219 阅读 · 0 评论 -
java8函数式接口和lambda表达式
1.只有一个抽象方法的接口称为函数式接口,但可以有其他方法(默认方法,静态方法,私有方法),用@FunctionalInterface注解来规范。2.函数式接口作为方法的参数。3.lambda表达式可以延迟执行,进行性能优化。4.函数式接口作为返回值来使用。1.Supplier接口,称为生产型接口,指定接口的泛型是什么类型,那么接口中的get方法就回生产什么类型的数据。2.Consumer接口是一个消费型接口,泛型指定什么类型,就可以使用accept消费什么类型数据3.Consume原创 2022-07-12 15:42:43 · 228 阅读 · 0 评论 -
内部类要点
1.内部类是指一个类内部包含另一个类,分为成员内部类和局部内部类,局部内部类包含匿名内部类。2.内部类可以随意访问外部类,外部类访问内部类时需要通过内部类对象。3.局部内部类是定义在方法内部的,出了这个方法就不能用了4.外部类的修饰符只能是public和default。5.成员内部类的修饰符可以是public,protected,default,private。6.局部内部类什么都不能写,但不是default。7.局部内部类需要访问所在方法的局部变量时,该变量需要用final修饰,从j原创 2022-07-12 10:18:34 · 119 阅读 · 0 评论 -
final和权限修饰符
final1.final修饰类,则该类不能被继承。2.final修饰方法时,该方法是最终方法,不能被覆盖重写。3.abstract不能和final同时使用,因为二者矛盾。4.final修饰局部变量时,该变量的值不能改变,对于基本数据类型来说,是变量中的数据不能变,对于引用类型来说,是变量中的地址值不可改变。5.当final修饰成员变量时,必须手动或者构造方法(全部)赋值,因为成员变量有默认值,一旦赋予默认值也不可改变权限修饰符...原创 2022-07-11 22:08:52 · 135 阅读 · 0 评论 -
对象的转型
向上转型1.对象的转型,其实就是多态写法,相当于把子类当作父类来使用。格式:父类 对象 = new 子类()。2.向上转型一定是安全的,因为是从小范围转向大范围,相当于猫一定是动物,但动物不一定是猫。向下转型 可用instanceof判断某对象是不是属于要转型的目标类对象,然后进行向下转型。...原创 2022-07-11 17:42:52 · 199 阅读 · 0 评论 -
面向对象多态
多态是指一个对象具有多种形态1.继承和实现是多态的前提,代码体现为父类引用(左边)指向子类对象(右边)。2.在多态的代码中,成员方法的访问规则是,看new的是谁,就优先用谁,没有则向上找。3.成员方法:编译看左边,运行看右边。成员变量:编译看左边,运行看左边。......原创 2022-07-11 17:16:41 · 100 阅读 · 0 评论 -
抽象类和接口
抽象类是对于同一类事物的描述1.不能直接创建抽象类对象,需要子类继承抽象类并重写所有抽象方法,然后使用子类。2.抽象类可以有构造方法,是供子类创建对象时,初始化父类成员用的。3.抽象类不一定有抽象方法,但有抽象方法的类一定是抽象类。4.抽象类的子类必须重写该抽象类的所有抽象方法,否则编译报错,除非该子类也是抽象类。接口可以对不同类事物的描述1.java7包含常量和抽象方法,java8默认方法和静态方法,java9增加私有方法。2.接口中的抽象方法修饰符是abstract和public两个固定原创 2022-07-11 16:50:28 · 200 阅读 · 0 评论 -
继承的细节
1.继承的主要目的是共性抽取。2.继承是多态的基础。3.在继承的关系中。子类可以被当作父类看待(is-a),反之不行。4.当子类和父类有重名变量时,等号左边是谁就调用谁的(A a = new A())。5.当调用方法访问成员变量时,方法是谁的就访问谁的变量。6.当父类和子方法重名时,创建的对象是谁(A a= new A()),就用谁的方法,没有则向上找。7.对于成员方法和成员变量,如果没有都是向上找(父类),不会向下找(子类)。因为父类不知道子类是谁的。8.@Override写在子类方法前面,原创 2022-07-11 16:06:16 · 122 阅读 · 0 评论 -
HashMap实现原理
HashMap(jdk1.7)实现原理什么是哈希值 在计算机领域,时刻都进行这资的传送,这些资源包括文本、图片、或者是一些字符串和数据,而哈希值可以认为是这些资源的DNA或者身份证,只不过它允许两个不同的对象有相同的哈希值。它是通过一个哈希函数计算而来的,如果两个对象值相同,那么哈希值也一定相等,但是哈希码相同的两个对象,其值也不一定相同。什么是HashMap 我们知道,数组和链表是两种基本的数据结构,数组查找数据快,单数新增和删除数据慢,而链表与数组相反,它删除和新增数据快,查找数据慢。既然两原创 2021-12-26 18:41:11 · 125 阅读 · 0 评论 -
java泛型学习
泛型## 泛型理解及作用 我们知道,java里面数组可以存储数据,并且只能存储同一种类型的数据,但是他有一个弊端,就是新增和删除元素的时候效率不高,由此出现了list和map等这种和数组具有相同功能的数据结构,我们称其为集合,他们底层的结构或是数组或是链表,总之是减少了数组的弊端。但是,他也有一个缺点,那就是存储的数据类型是任意的,无论是基本数据类型还是引用类型,这样带来的问题是,出现转型错误,例如:public class Generic1 { public static void m原创 2021-12-26 18:38:37 · 385 阅读 · 0 评论 -
BIO和NIO
两种通信模式BIO和NIO io是指计算机的输入输出操作,广义的讲就是数据在的一种传输,可分为磁盘io(硬盘的读写)和网络io(socket的读写),这里的两种模式都是基于网络io的。io的分类阻塞I/O与非阻塞I/O阻塞I/O:内核在检查数据未就绪时,会一直等待,直到数据就绪非阻塞I/O:如果数据没有就绪,则会返回一个标志信息告知用户线程当前要读的数据没有就绪它们的区别在于I/O的第一阶段,阻塞是选择等待,非阻塞是返回一个标志信息同步I/O和异步I/O事实上,同步IO和异步IO模型是针对原创 2021-12-26 18:37:55 · 3618 阅读 · 0 评论 -
String字符串详解
String字符串详解equals和== 在java中,equals和主要用于比较两个对象,对于基本数据类型来说,主要用于值比较,而基本数据类型不能用equals比较,对于引用类型来说,如果没有重写Object里面的equals方法,那么和equals比较的都是对象的引用地址,因为Object里面的equals方法就是用实现的,String重写了equals,主要比较内容是否一样。String里面的常见比较public class TestString { public static v原创 2021-12-26 18:36:20 · 380 阅读 · 0 评论 -
Java基础第五部分
Java基础第五部分 ## 面向过程 一种较早的编程思想,顾名思义就是该思想是站着过程的角度思考问题,强调的就是功能行为,功能的执行过程,即先后顺序,而每一个功能我们都使用函数(类似于方法)把这些步骤一步一步实现。使用的时候依次调用函数就可以了。面向对象 一种基于面向过程的新编程思想,顾名思义就是该思想是站在对象的角度思考问题,我们把多个功能合理放到不同对象里,强调的是具备某些功能的对象,具 备某种功能的实体,称为对象。面向对象最小的程序单元是:类。面向对象更加符合常规的思维方式,稳定性好,可原创 2020-10-05 18:27:04 · 228 阅读 · 0 评论 -
Java基础第四部分
Java基础第四部分方法 在java中,方法就是用来完成解决某件事情或实现某个功能的办法,方法实现的过程中,会包含很多条语句用于完成某些有意义的功能,其设计原则为一般一个 方法对应一个功能。其格式为: 修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2,......){ 执行语句 ……… return 返回值; } 修饰符:目前就用 public static。还有其他的修饰符。 返回值类型:就是功能结果的数据类型。当这个方法没有返回值原创 2020-10-04 15:39:06 · 211 阅读 · 0 评论 -
java基础第三部分
java基础第三部分Scanner类用法作用:可接受屏幕输入的字符并输出。测试 .使用next输出public class Demo01 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("使用next方式接收:"); //判断用户有没有输入字符串 if(sca原创 2020-10-03 18:25:09 · 104 阅读 · 0 评论 -
java基础第二部分
java基础第二部分运算符算数运算符算术运算符用在数学表达式中,它们的作用和在数学中的作用一样操作符名称描述+加法相加运算符两侧的值–减法左操作数减去右操作数*乘法相乘操作符两侧的值/除法左操作数除以右操作数%取余左操作数除以右操作数的余数++自增操作数的值增加1–自减操作数的值减少1%取模两个数相除的余数测试public class Demo01 { public static voi原创 2020-10-03 12:35:06 · 172 阅读 · 0 评论 -
java基础第一部分
java基础关键字abstract表明类或者成员方法具有抽象属性assert用来进行程序调试boolean基本数据类型之一,布尔类型break提前跳出一个块byte基本数据类型之一,字节类型case用在switch语句之中,表示其中的一个分支catch用在异常处理中,用来捕捉异常char基本数据类型之一,字符类型class类const保留关键字,没有具体含义关键字含义continue回到一个块的开始处原创 2020-10-01 17:19:24 · 164 阅读 · 0 评论