
Java语法学习
文章平均质量分 86
覆盖Java全部语法,从入门到精通,知识点全面
阿琛c
这个作者很懒,什么都没留下…
展开
-
ThreadLocal源码分析详解
在Java中,栈内存归属于单个线程,每个线程都会有一个栈内存,其存储的变量只能在其所属线程中可见,即栈内存可以理解成线程的私有内存,而堆内存中的对象对所有线程可见,堆内存中的对象可以被所有线程访问。就比如线程池里面的线程,线程都是复用的,那么之前的线程实例处理完之后,出于复用的目的线程依然存活,所以,ThreadLocal设定的value值被持有,导致内存泄露。他有很短暂的生命周期,在垃圾回收器线程扫描他所管辖的内存区域的时候,一旦发现有弱引用对象,不管内存空间足够与否,都会回收。原创 2022-08-21 13:16:18 · 415 阅读 · 0 评论 -
集合【源码分析】--- ArrayList
首先说一下什么是线程不安全:线程安全就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用。从源码的角度来看,因为Vector的方法前加了,synchronized 关键字,也就是同步的意思,因此Vector是线程安全的,而arraylist类中的方法没有加锁虽然线程不安全但是多线程访问该类效率明显高于Vector。那好,现在我们来看看 ArrayList 的情况,元素实际上只有一个,存放在位置 0,而 Size 却等于 2。原创 2022-08-20 12:23:29 · 255 阅读 · 0 评论 -
Java网络编程
计算机网络就是通过传输介质、通信设施和网络协议,把分散再不同四点的计算设备互连起来,实现资源共享和数据传输的系统。原创 2022-08-09 12:03:04 · 155 阅读 · 0 评论 -
Stream
Stream流,是jdk1.8中对集合对象功能的增强,可以通过将集合转换为六模型,通过声明的方式对集合中每个元素进行一系列并行或者串行的流水操作对数据进行排序取值从数据源中获取一组用户信息,查找年满18周岁以上的所有用户,然后针对用户信息按照工资值进行倒叙排序,获取所有用户的id编号public class User{ private Long id; private String name; private Double salary; private int...原创 2022-03-22 18:08:18 · 191 阅读 · 0 评论 -
面向对象常见问题总结
重点回顾1.== 和 equals 的区别== 作用于基本数据类型变量,比较的是其存储的值是否相等;作用于应用数据类型变量,比较的是所指向的对象的地址equlse equlse方法的继承自Object类,如果没有对equlse方法进行重写的话,比较的是引用类型变量所指向的对象的地址。equlse重写比较的是两个对象的内容是否一样2.hashcode()和equlse()hashcode()的作用就是获取哈希码(散列码),通过获取到的哈希码来确认该对象在哈希表中的位置为啥要有hashc原创 2022-01-06 16:27:52 · 1305 阅读 · 0 评论 -
Java 抽象类
抽象类面向对象编程的核心就是面向抽象编程,一般在开发过程中依赖抽象,不依赖具体简介抽象类包含抽象方法的类就叫做抽象类。抽象类不允许直接创建实例,只能由子类提供方法实现后才能通过子类创建对象抽象方法就是指没有方法体的方法,方法只做声明,没有具体的实现。抽象方法必须在子类中提供具体是实现 抽象类中可以包含抽象方法,不是必须包含抽象方法 语法:public abstract class Animal{} //abstract class用于声明抽象类public class.原创 2021-12-15 20:52:52 · 138 阅读 · 0 评论 -
Java 多态性(概述)
多态性多态性是发送消息给某个对象,让该对象自行决定响应何种行为。通过将子类对象引用复制给超类对象引用变量来实现动态方法调用多态形成的三个必要条件: 有继承,父类定义方法,子类重写方法 父类的引用指向子类的对象 Object obj = new Date(); 可以使用参数传递时多态,也可以直接创建对象时多态 多态可以用三个定义个两个方法来总结 三个定义分别是父类定义子类构建、接口定义实现类构建、抽象类定义实体类构建 两个方法分别是方法重载和方法重原创 2021-12-15 14:34:58 · 606 阅读 · 0 评论 -
Java面向对象基础练习题(含答案超详细)
第1题案例:声明一个日期类MyDate,包含属性:年、月、日声明一个Test02测试类,并在main方法中,创建3个日期对象,一个是你的出生日期,一个是我们开班的日期,一个是今年过年的日期,并打印显示系统预定义的日期类型。jdk1.8+提供了2套日期类型java.util.Datepublic class Date implements java.io.Serializable,Cloneable,Comparable<Date>{ private...原创 2021-12-13 20:09:33 · 18290 阅读 · 5 评论 -
Java语法基础:final和static关键字
语法基础关键字final意思是最终的、不可变的修饰变量final修饰变量时,变量必须初始化,并且不能被修改。初始化可以定义final变量时直接初始化或者在构造函数中初始化修饰局部变量修饰方法final修饰方法则该方法不能被子类重写修饰类final修饰一个类,则该类不能被继承扩展表示字符串的三种类型String、StringBuffer、StringBuilder都是final类型的类,所以都不允许继承总结 final属性山可以声明的时候同时直接赋值或者在原创 2021-12-07 16:48:21 · 1841 阅读 · 0 评论 -
Java面向对象基础
JavaSE面向对象基础重点回顾数组的创建: 动态创建:数据类型[] 数组变量名 = new 数据类型[] 静态创建:数据类型[] 数组变量名 = {元素1,元素2,...} 动态创建并赋初始值:数据类型[] 数组变量名 = new 数据类型[]{元素1,元素2,...} 数组特点: 只能存储相同类型的数据 数组中的值可以重复 数组的长度是固定的 数组是连续的内存空间 相关的算法 冒泡排序 二分法查找 系统与定原创 2021-11-30 14:33:39 · 786 阅读 · 0 评论 -
java字符串类型
String 、 StringBuffer 、 StringBuliderString s1 = "ab" + "c"String s2 = "abc";System.out.println(s1 == s2); //返回值为true//s1和s2指向的是同一个对象 所以返回值是true字符串常量拼接,在方法区的常量池中完成String s0 = "ab";String s1 = s0 + "c";String s2 = "abc";System.out.println(s1原创 2021-11-24 23:27:35 · 525 阅读 · 0 评论 -
Java基础练习题
1.计算输入数据的阶乘值这里有两种方法,循环在此不做介绍递归程序调用自身的编程技巧称为递归。一个过程或函数在其定义或说明中有直接或间接嗲用自身的一种方法,他通常把一个大型阀组的问题层层转化为一个于原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大的减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当递归条件满足时,递归返回。例如汉诺塔问题、原创 2021-11-16 17:10:14 · 714 阅读 · 0 评论