java基础
java 基础部分学习
TEN_Mammon
我没有什么想说的
展开
-
Java 强引用、弱引用、软引用、虚引用
一、强引用(StrongReference)Object sample = new Object();强引用是最常见的一种引用,如果一个对象有强引用,那么GC绝对不会回收它。当内存不足时,JVM宁愿抛出OOM也不愿意随意回收强引用的对象,如果强引用不使用时,需要显式的置空或者让其超出对象的生命周期范围从而使GC能够进行回收,比如Vector类的clear方法中就是通过将引用赋值为null来实现清理工作的: /** * Removes the element at the specifi原创 2020-06-05 16:33:43 · 126 阅读 · 0 评论 -
Android 内存泄露
一、 java内存分配策略Java 程序运行时的内存分配策略有三种,分别是静态分配,栈式分配,和堆式分配,他们对应的内存空间主要是以下三种:静态存储区(方法区):主要存放静态数据、全局 static 数据和常量。这块内存在程序编译时就已经分配好,并且在程序整个运行期间都存在。栈区:当方法被执行时,方法体内的局部变量都在栈上创建,并在方法执行结束时这些局部变量所持有的内存将会自动被释放。因为栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。堆区:又称动态内存分配,原创 2020-06-04 19:47:49 · 124 阅读 · 0 评论 -
java 反射原理
反射设计背景反射是为了能够动态的加载一个类,动态的调用一个方法,动态的访问一个属性等动态要求而设计的。它的出发点就在于JVM会为每个类创建一个java.lang.Class类的实例,通过该对象可以获取这个类的信息,然后通过使用java.lang.reflect包下得API以达到各种动态需求。反射的初衷不是方便你去创建一个对象,而是让你在写代码的时候可以更加灵活,降低耦合,提高代码的自适应能...原创 2019-12-27 15:28:30 · 152 阅读 · 0 评论 -
java枚举与注解
枚举什么是枚举枚举(Enum)是在Java 5中添加的新的类型,技术上来讲,由于enum是一个类,一个enum可以有构造方法和方法。如果有构造方法,那必须是私有的。如果一个enum定义了枚举值之外的其他内容,枚举值必须在其他内容之前定义,并且最后的枚举值用一个分号结束。枚举的使用创建枚举enum Letter{ A,B,C,D}创建枚举需要使用到关键字 enum,标识符 ...原创 2019-12-26 14:45:31 · 210 阅读 · 0 评论 -
java 类的加载
类的加载当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进行初始化。类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并...原创 2019-12-24 15:29:21 · 156 阅读 · 0 评论 -
java 线程通信
前文:java 线程与进程基础、java 锁、java 线程池线程通信在java 线程与进程基础中我们讲过进程同步,而进程同步问题中有一个非常典型的生产者-消费者问题:当队列满时,生产者需要等待队列有空间才能继续往里面放入商品,而在等待的期间内,生产者必须释放对临界资源(即队列)的占用权。因为生产者如果不释放对临界资源的占用权,那么消费者就无法消费队列中的商品,就不会让队列有空间,那么生产...原创 2019-12-19 18:08:04 · 99 阅读 · 0 评论 -
java 线程池
线程池基本概念为什么会有线程池?在实际开发中,我们通过开启多个线程去提高应用程序的使用率,让系统和程序达到最佳效率,但是我们知道,每次创建和销毁一个线程都是要消耗系统资源的,线程少时这不是问题,但当线程数达到一定数量时就会耗尽系统CPU和内存资源,也会造成GC频繁回收和停顿,影响系统的性能,所以线程池就应运而生了。线程池的作用?线程池就是提前创建若干个线程,如果有任务需要处理,...原创 2019-12-19 15:42:57 · 109 阅读 · 0 评论 -
java 锁
线程间通信原创 2019-12-19 14:30:19 · 113 阅读 · 0 评论 -
java 线程与进程基础
基础进程定义:进程就是正在运行的程序,是系统进行资源分配和调用的独立单位。每一个进程都有它自己的内存空间和系统资源。资源管理器中的一个应用就是一个进程。引入进程是为了使多个程序可以并发的执行,以提高系统的资源利用率和吞吐量。状态 就绪状态:进程已处于准备运行的状态,即进程获得了除处理机之外的一切所需资源,一旦得到处理机即可运行。运行状态:进程正在处理机上运行。在单处理机环...原创 2019-12-18 17:10:11 · 158 阅读 · 0 评论 -
java 数据结构详解
前文 :数据结构基础常见集合Collection接口Collection派生出三个子接口,Set代表不可重复的无序集合、List代表可重复的有序集合、Queue是java提供的队列实现。Collection提供了很多的基础方法,供它的子类调用:int size(): 获取元素个数boolean isEmpty():个数是否为零boolean contains(Object ele...原创 2019-12-17 18:09:16 · 1287 阅读 · 1 评论 -
java 数据结构基础
常用数据结构数组无序数组:优点:查询快,知道索引的情况下可以快速存取缺点:删除慢,大小固定有序数组:优点:比无序数组查找快缺点:删除和插入慢,大小固定栈优点:提供后进先出的存取方式缺点:存取其他项很慢队列优点:提供先进先出的存取方式缺点:存取其他项很慢补充:单队列(单队列就是常见的队列, 每次添加元素时,都是添加到队尾,存在“假溢出”的问题也就是明明有位置...原创 2019-12-17 14:28:53 · 218 阅读 · 0 评论 -
java 绑定机制
什么是绑定?把一个方法与其所在的类/对象 关联起来叫做方法的绑定。绑定分为静态绑定(前期绑定)和动态绑定(后期绑定)。静态绑定在程序运行前就已经知道方法是属于那个类的,在编译的时候就可以连接到类的中,定位到这个方法。在Java中,final、private、static修饰的方法以及构造函数都是静态绑定的,不需程序运行,不需具体的实例对象就可以知道这个方法的具体内容。动态绑定在程序...原创 2019-12-17 10:56:52 · 151 阅读 · 0 评论 -
java 面向对象相关
面向对象什么是面向对象?我不知道。针对事物或行为,抽取共性,保留多样性,将复杂的事情简单化,在使用的时候将共性和多样性进行组合来达到我们需要实现的功能。这是我的理解。面向对象的特征封装、继承、多态创建对象的过程(A s = new A())⁃ 加载A.class文件进内存⁃ 在栈内存中为s开辟空间⁃ 在堆内存中为s的成员变量开辟控件⁃ 对s的成员变量进行默认初始化⁃ 对s的...原创 2019-12-16 17:14:22 · 120 阅读 · 0 评论 -
java 泛型的使用
概述基本概述泛型是一种把类型明确的工作推迟到创建对象或者调用方法的时候才去明确的特殊的类型,也就是把类型当做参数一样的传递。JDK1.5时才增加了泛型。作用泛型的出现减少了很多强转的操作,同时避免了很多运行时的错误,在编译期完成检查类型转化。通过泛型的使用在编译阶段完成一些类型转换的工作,避免在运行时强制转换时出现ClassCastException(类型转换异常),在很大的程度...原创 2019-12-16 16:30:21 · 94 阅读 · 0 评论 -
java 常用的API方法
Object类equals():判断两个对象是否相等clone():进行对象拷贝getClass():返回和当前对象相关的Class对象notify()、notifyAll()、wait()用来对对象进行线程同步String类String类代表字符串,字符串是常量,String是常量,但是引用是可变的。Java 语言提供对字符串串联符号("+")以及将其他对象转换为...原创 2019-12-16 13:11:13 · 320 阅读 · 0 评论 -
static、final关键字
static作用:修饰成员变量和成员方法:被static修饰的成员变量属于静态成员变量,存放在java内存区域的方法区。被static修饰的方法属于类,被由这个类实例化的所有对象共享,可以并且建议通过类名调用。静态代码块:静态代码块定义在类中方法外,在非静态代码块之前执行(静态代码块 -> 非静态代码块 -> 构造方法),该类不管创建多少对象,静态代码块只执行一次。...原创 2019-12-16 10:49:15 · 87 阅读 · 0 评论 -
java 运算符
算术运算符算术运算符的操作对象必须是数值类型,不能为boolean进行运算,因为在Java中,char类型本质上是int的子集,所以也能对char类型进行运算。运算符含义+加(一元加号)-减(一元减号)*乘/除%求模(取余数)+ +自增- -自减+=加并赋值-=减并赋值*=乘并赋值/=除并...原创 2019-12-15 16:18:57 · 280 阅读 · 0 评论 -
java 基本数据类型与包装类
基本类型1.整型名称宽度范围byte8-128 ~ 127short16-32768 ~ 32767int32-2 147 483 648 ~ 2 147 483 647long64-9 223 372 036 854 775 808 ~ 9 223 372 036 854 775 807整型字面值可以写为十进制,十六进制,八进...原创 2019-12-13 17:58:15 · 163 阅读 · 0 评论 -
java 关键字整理
用于定义数据类型的关键字class interface byte short intlongfloatdoublecharbooleanvoid用于定义数据类型的值的关键字truefalsenull用于定义流程控制的关键字ifelseswitchcasedefaultwhiledoforbreak 用于switch语句中,表示...原创 2019-12-13 14:55:20 · 114 阅读 · 0 评论