
Java SE
小张在努力
努力努力再努力
展开
-
【Java】public/private/protected/default作用域比较
public/private/protected/default作用域比较 作用域比较public:表明该成员变量或者方法对所有类或者对象都是可见的。并且类或对象都可以直接访问private:表明该成员变量或方法是私有的,只有当前类对其具有访问权限。其他类或对象没有...原创 2020-01-15 23:25:45 · 699 阅读 · 0 评论 -
【Java】面向对象和面向过程的区别
Java面向对象和面向过程的区别?面向对象是一种编程术语。是目前软件开发的主流方法之一,是把数据以及对数据的操作放在一起,作为一个相互依存的整体,就是我们所说的对象。它们的共性就是类,类中有数据,只能被本类的方法进行处理。这个类,可以通过一个外部接口与外界产生联系,对象和对象通过消息进行通信。面向过程是一种以事件为中心的开发方法,按照自顶向下的顺序执行,逐步求精;程序结构按照功能划分为若干...原创 2019-10-23 23:02:39 · 509 阅读 · 0 评论 -
【Java】super( )和this( )的区别
super( )和this( )的区别?super关键字可以修饰属性、方法、构造方法1.当子类和父类属性重名时,可以通过“super.属性名”的方式调用父类中声明的属性如果想区分类中的属性和局部变量,用“this.属性名”2.子类重写父类方法以后,如果子类想再次调用父类被重写方法时,可以用“super.方法名称()”3.super修饰构造方法内部,“super(形参)”的方式来显...原创 2019-10-17 20:09:30 · 129 阅读 · 0 评论 -
【Java】多线程之进程与线程及线程的实现
目录多线程进程与线程进程与线程的比较:线程状态Java 多线程实现Runnable接口来实现多线程继承Thread类与实现Runnable接口的关系:使用Callable实现多线程Callable实现多线程多线程进程与线程进程:操作系统中一个程序的执行周期。线程:一个进程中同时执行多个任务,每个任务就称为一个线程。进程与线程的比较:1....原创 2019-08-12 10:41:47 · 141 阅读 · 0 评论 -
【Java】多线程之生产者与消费者模型
目录Threadlocal—线程本地方法生产者与消费者模型可重入锁Threadlocal—线程本地方法用线性探测解决哈希冲突属于线程私有资源,不与其他线程共享set( ) 设置线程私有属性值get( ) 取得线程私有属性值每个Thread对象内部都有一个Threadlocal.Threadlocal Map(存放元素)该对象属于每个线程自己,因此其保存的内容...原创 2019-08-19 20:17:48 · 228 阅读 · 0 评论 -
【Java】泛型之通配符及类型擦除
目录泛型之通配符及类型擦除通配符类型擦除*语法糖*泛型之通配符及类型擦除通配符引入泛型以后,在泛型的方法上,如果有n个类型就需要写n个重载,所以引入了通配符? :表示可以接收任意类型用于方法中,表示可以接收任意类型的泛型类只能取得类中数据,不能修改数据,因为类型不确定,无法设置确定类型?:extends 类:设置/取得泛型上限eg:? extends ...原创 2019-08-07 20:07:17 · 274 阅读 · 0 评论 -
【Java】泛型之泛型类、泛型方法及泛型接口
目录泛型1.JDK1.5新特性1.1可变参数1.2foreach循环2.泛型2.1泛型类的基本使用2.2泛型方法:2.3泛型接口:泛型1.JDK1.5新特性1.1可变参数使用要求:一个方法有且只能有一个可变参数,并且放在方法的最后一个参数语法:类型声明 ... 参数名称int ... data1.2foreach循环...原创 2019-08-07 19:25:32 · 371 阅读 · 0 评论 -
【Java】新特性之Lambda表达式
目录Lambda表达式语法:方法引用Lambda表达式要想使用函数式编程:接口必须只有一个方法,如果存在两个以上的方法,无法使用函数式编程interface Add{ void add(int x,int y);}public class Test{ public static void main(String[] args){ Add...原创 2019-08-09 20:12:42 · 198 阅读 · 0 评论 -
【Java】新特性之注解
目录注解(Annotation)@Override 准确覆写@Deprecated 过期声明@SuppressWarning 压制警告接口定义加强注解(Annotation)JDK提供的三个内置注解:@Override、@Deprecated、@SuppressWarnings @Override 准确覆写 当子类覆写父类方法时,此注解检...原创 2019-08-09 19:35:39 · 152 阅读 · 0 评论 -
【Java】新特性之枚举
目录枚举Enum类Enum类中存在两大属性取得所有枚举类对象枚举中定义其他结构枚举实现接口枚举使用enum关键字定义的枚举结构实际上是默认继承了Enum类的枚举类语法://定义枚举enum Color{ RED,BLUE,GREEN;}Enum类Enum类中存在两大属性name:枚举对象名称public final ...原创 2019-08-09 09:02:31 · 132 阅读 · 0 评论 -
【Java】多线程之Lock体系——基于Java语言层面实现的线程“锁”
目录Lock体系那到底是用synchronized还是lock?ReentrantReadWriteLockCondition(接口)Lock体系产生背景:synchronized 死锁破坏死锁的不可抢占:1.响应中断 void lockInterruptibly();2.支持超时 boolean tryLock(long time,TimeUnit unit)...原创 2019-08-21 10:28:15 · 296 阅读 · 0 评论 -
【Java】多线程之线程休眠、让步、等待、停止及优先级
目录多线程常用操作方法线程命名与取得线程休眠方法sleep() —— 单位为毫秒(Long)线程让步(yield()方法)等待其他线程终止:join()线程停止线程优先级多线程常用操作方法线程命名与取得多线程的运行状态是不确定的,所以对于多线程必须有一个明确标识出线程对象的信息,这个信息往往通过名称来描述,在Thread类中提供有以下线程名称方法I....原创 2019-08-12 21:38:02 · 665 阅读 · 0 评论 -
【Java】多线程之守护线程
守护线程守护线程是一种特殊的线程,又称为陪伴线程。Thread 类提供isDaemon()区别两种线程:返回false表示该线程为用户线程;否则为守护线程。典型守护线程就是垃圾回收线程。只要当前JVM进程中存在任何一个用户线程没有结束,守护线程就在工作;只有当最后一个用户线程结束时,守护线程才会随着JVM一同停止工作。Thread提供setDaemon()将用户线程设置成...原创 2019-08-12 21:41:49 · 167 阅读 · 0 评论 -
【Java】多线程实现方式——线程池
目录多线程实现方式:线程池AQS多线程实现方式:继承Thread类,覆写Run( )方法 实现Runnable接口,覆写Run( )方法 实现Collable接口,而后覆写call(V)方法 线程池线程池——推荐使用线程池来创建线程优点:1.降低资源消耗:重复利用已创建的线程降低线程创建和销毁带来的消耗 2.提高响应速度:当任务到达时,任...原创 2019-08-22 10:18:42 · 236 阅读 · 0 评论 -
【Java】多线程——可重入锁特点
Reentrantlock——可重入锁内建锁隐式支持重入锁,Synchronized通过获取自增,释放自减的方式实现重入1.重入锁实现原理重入锁的特点:1)线程获取锁时,如果已经获取锁的线程是当期线程直接再次获取;2)由于锁会被获取N次,因此锁只有被释放N次之后才算真正释放成功2.公平锁与非公平锁公平锁:锁的获取顺序一定满足时间上的绝对顺序,等待时间最长的线程一定最先获...原创 2019-09-04 10:59:39 · 282 阅读 · 0 评论 -
【Java】多线程——写锁(独占锁)、读锁(共享锁)与写锁的降级
ReentrantReadWriteLock读写者模型:读写锁运行同一时刻被多个读线程访问,但是在写线程访问时,所有的读线程以及其他写线程均会被阻塞(读锁不等于无锁)写锁——独占锁写锁的获取——tryAcquire(int acquires)如何区分读状态与写状态:同步状态高16位表示读锁获取次数,低16位表示写锁获取次数写锁释放——重写AQS的tryRelease方法...原创 2019-09-04 11:15:32 · 250 阅读 · 0 评论 -
【Java】ArrayList用法解析与遍历(转载)
说明:转载(原文链接):https://zhuanlan.zhihu.com/p/642638201、添加 : add(Object obj); 添加的是对象2、集合中元素个数: size();3、集合是否为空: isEmpty(); 返回Boolean类型4、指定集合中对象添加到此集合中: addAll(Collection c);5、删除: remove(); --根...转载 2019-09-18 11:27:02 · 184 阅读 · 0 评论 -
【Java】反射
目录反射1.认识反射2.核心类Class类(描述其他类的组成)3.反射与类的操作4.反射与构造方法 ——Constructor(描述类构造方法信息)5.反射调用普通方法6.反射与普通属性7.动态破坏封装(反射特性)——在一次JVM进程中且只能通过反射来调用反射1.认识反射反射:指的是对象的反向处理,根据对象倒推类的组成2.核心类Class类(描述其...原创 2019-09-20 17:38:32 · 157 阅读 · 1 评论 -
【Java】JDK内置三大类加载器、类加载器的双亲委派模型及意义
目录类加载器ClassLoader2.JDK内置的三大类加载器a.Bootstrap(启动类加载器)b.ExtClassLoader<扩展类加载器>c.AppClassLoader(应用程序类加载器)3.类加载器的双亲委派模型类加载器ClassLoader1.定义:通过一个类的全名称获取此类的二进制字节流,实现类加载功能的代码模块2.JDK内置的三大...原创 2019-09-23 09:08:41 · 347 阅读 · 0 评论 -
【Java】IO——File、字节流与字符流、内存流、打印流、输入流与输出流、序列化与反序列化
目录IO一、File文件操作类—既可以描述具体文件也可以描述文件夹二、字节流与字符流三、文件拷贝四、字符编码五、内存流(以内存为终端的输入输出流)六、打印流(输出流的强化版本)七、System类对IO的支持八、两种输入流九、序列化IO核心掌握五个类(File、OutputStream、InputStream、Reader、Writer)一个接口(Se...原创 2019-09-25 14:01:12 · 164 阅读 · 0 评论 -
【Java】多线程之线程的同步与死锁
目录线程的同步与死锁synchronized(内建锁)实现同步处理(加锁操作)synchronized对象锁概念全局锁:锁代码段synchronized底层实现原理同步代码块底层实现:同步方法底层实现:JDK1.5提供的Lock锁(juc)synchronized优化CAS的操作过程CAS的问题Java对象头偏向锁轻量级锁:重量级锁三...原创 2019-08-13 17:44:00 · 144 阅读 · 0 评论 -
【Java】异常与捕获
目录异常体系非受查异常受查异常异常处理格式ThrowsThrow面试题:异常体系当程序出现错误时,能够最大化的减少损失的一种保护手段Error(栈溢出):Error类描述Java运行时内部错误与资源耗尽错误,应用程序不抛出此类异常,这种内部错误一旦出现,除了告知用户,并且使程序安全终止。 RuntimeException(运行时异常):...原创 2019-08-05 18:12:20 · 175 阅读 · 0 评论 -
【Java】this和super的区别
原创 2019-04-07 16:46:56 · 87 阅读 · 0 评论 -
【Java】向上转型及向下转型
一.向上转型:语句:父类 父类引用 = new 子类();应用场景:参数统一化例子:class person{ public void fun(){ System.out.println("1.我是熊大!"); }}class Student extends person{ public void fun(){ ...原创 2019-04-08 20:04:55 · 239 阅读 · 0 评论 -
【Java】多态、内部类、内外部类的关系
首先知道多态的定义:**多态:**一个类实例的相同方法在不同情形下有不同的表现形式.方法多态:方法重载方法覆写内部类:可将内部类视为属性来看待(本质)内部类的定义:定义:所谓的内部类只是在类的内部进行了类结构的嵌套操作。根据内部类定义的位置以及关键字一共分为以下四种内部类:成员内部类静态内部类方法内部类匿名内部类内部类的优点:1.内部类与外部类可以访问彼此...原创 2019-04-08 21:17:52 · 311 阅读 · 0 评论 -
【Java】为什么会产生抽象类,抽象类的定义,方法及使用原则
首先为什么会有抽象类和接口的产生?当提到这里时必须先讲一讲方法覆写方法覆写:定义了方法名称,返回值类型,参数的类型及个数完全相同,被覆写的方法不能有比子类更为严格的访问控制权限。方法覆写:多态的关键所在。所以为了强制要求子类必须覆写父类方法产生了抽象类与接口.多态:一个类实例的相同方法在不同情形下有不同的表现形式。回顾:向上转型:参数统一化父类 父类引用 = new 子类实例...原创 2019-04-12 19:53:28 · 1184 阅读 · 0 评论 -
【Java】接口使用原则及代理模式
接口:开发原则:接口优先原则,在一个场景既可以使用抽象类也可以使用接口的时候,优先考虑使用接口.定义:接口中只有全局常量和抽象方法(JDK8之前),接口使用interface定义接口.2.使用原则:a.接口无法直接创建实例化对象,需要通过具体子类向上转型为其实例化。b.接口命名一般以I 开头,子类实现一般以implements关键字实现接口,一般以impl结尾,表示此类是一个接口的子类...原创 2019-04-13 18:41:19 · 618 阅读 · 0 评论 -
【Java】抽象类与接口的区别
抽象类与接口的区别:1.从结构来看:抽象类:普通类+抽象方法接口:抽象方法+全局常量2.从权限来看:抽象类:各种权限接口:public3.子类使用:抽象类:使用extends关键字继承抽象类接口:使用implements关键字实现接口4.抽象类与接口的关系抽象类:一个抽象类可以实现若干个接口接口:接口不能继承抽象类,但是接口可以使用extends关键字继承多个...原创 2019-04-14 12:07:32 · 147 阅读 · 0 评论 -
【Java】三大特殊类之------String类
三大特殊类String类Object类包装类String类:final class String被final修饰的类不能被继承(为保证所有用户用到的String类都一样,只能使用,不能修改)1.实例化方式直接赋值String str = "hello world";通过构造方法赋值String str = new String("hello world");例子:...原创 2019-05-05 21:16:11 · 486 阅读 · 0 评论 -
【Java】关于String、StringBuffer、StringBulider的区别
解释String与StringBuffer,StringBuilder的区别:String是常量,内容不可修改,而StringBuffer与StringBuilder的内容可以修改.StringBuffer使用同步处理,线程安全,性能较低;StringBuilder使用异步处理,线程不安全,性能较高.在普遍场景下,推荐使用StringBuilder.当String对象使用"+"...原创 2019-05-06 22:49:02 · 125 阅读 · 0 评论 -
【Java】定义一个Father和Child类,并进行测试
要求如下:1)Father类为外部类,类中定义一个私有的String类型的属性name,name的值为“zhangjun”。2)Child类为Father类的内部类,其中定义一个introFather()方法,方法中调用Father类的name属性。3)定义一个测试类Test,在Test类的main()方法中,创建Child对象,并调用introFather ()方法。class Fath...原创 2019-04-03 20:03:42 · 3395 阅读 · 1 评论 -
【java】重载(overload)与覆写(重写)(override)的区别
重载(overload)是在一个类中,定义方法名称相同,参数的类型及个数不同,且没有权限要求.覆写(override)是继承关系,定义方法名称,返回值类型,参数的类型及个数完全相同,被覆写的方法不能拥有比父类更为严格的访问控制权限....原创 2019-03-31 19:16:41 · 194 阅读 · 0 评论 -
【java】继承与单继承局限
继承 :继承描述的是一种能力,可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。 要使用继承,必须满足is-a原则.(代码复用性)继承使用extendseg:Student,extends,person继承语法:子类 extends 父类(子类使用extends来继承父类)子类:派生类,子类一定具有父类的全部属性与行为,并且与父类相比,拥有的属性更多,具有的行...原创 2019-03-31 17:45:10 · 2283 阅读 · 4 评论 -
【Java】单例模式
目录单例模式饿汉式单例懒汉式单例单例模式一个类只允许产生一个实例化对象那怎么样限制对象的产生个数对象的产生是通过构造方法产生对象private声明构造方法 单例类内部提供一个产生好的静态对象 单例类内部提供静态方法返回唯一的一个对象单例设计模式有两种:饿汉式单例模式 懒汉式单例模式饿汉式单例class Singleton{ ...原创 2019-08-05 09:46:55 · 107 阅读 · 0 评论 -
【Java】三大特殊类之------包装类
目录包装类1.包装类的定义2.包装类的分类关于Number类装箱与拆箱知识点:包装类与字符串的转换三大特殊类:String类 Object类 包装类包装类包装类就是将基本数据类型封装到类中为什么会产生包装类:Object可以接收所有引用数据类型,在Java中,数据类型分为基本数据类型和引用数据类型,那包装类就是将基本数据类型封装到类中。...原创 2019-08-03 18:32:02 · 130 阅读 · 0 评论 -
【Java】简介及语法
JAVA语言:1.源于1991年Sun公司,JAVA是一门半编译,半解释性语言编译:C解释:Python , js注:编译产生目标程序,解释不产生目标程序.2.JVM:JAVA虚拟机用软件模拟一个与系统无关的软件虚拟机:用软件模拟物理指令集形成的模拟系统进程:程序的一次执行过程线程:程序里的一个子任务3.源文件:以 *.java 结尾的文件(一切皆对象)主类(public c...原创 2019-01-06 15:07:43 · 195 阅读 · 0 评论 -
【Java】数据类型与运算符
一.1.注释i.单行注释: //ii.文档注释: /** */2.标识符i.Java语言中,对于变量,常量,函数,语句块也有名字,我们统称为Java标识符.ii.java标识符,要求:● 由字母、数字、_、组成,其中不能以数字开头,不能用Java中的保留字(关键字)● 标识符采用有意义的简单命名● "$"不要在代码中出现3.驼峰命名法:i.大驼峰:定义类,接口时使用.单...原创 2019-01-12 22:20:44 · 214 阅读 · 0 评论 -
【Java】逻辑控制和方法使用
public class Test{ public static void main (String [ ] args){ int line = 10: for(int x = 0;x<line;x++){ for(int y = 0;y<line-x;y++){ System.out.pr...原创 2019-01-15 09:40:59 · 153 阅读 · 0 评论 -
【Java】数组的定义与使用
数组:一组相同数据类型的集合,长度固定类集:动态数组基本概念1.动态初始化数组是引用数据类型,有内存分配问题.语法:声明并初始化数组数据类型 [ ] 数组名称 = new 数据类型 [长度]声明并开辟长度为3的整型数组int[ ] date = new int [3];当数组开辟新空间之后,可采用以下方式进行操作:a.当开辟数组空间后,所有数组内容为其数据类型默认值b.通过...原创 2019-01-15 21:49:09 · 264 阅读 · 0 评论 -
【Java】this关键字与static关键字
一.this关键字I.this表示本类属性程序的就近取用原则使用this,属性名称表示直接从类中寻找同名属性在类中使用本类属性一定要加上this关键字II.this表示本类方法a.this表示本类的构造方法this (方法参数);//有参构造this();//无参构造在构造方法首行使用this(参数)表示调用本类的构造方法1.this调用本类构造方法必须写在构造方法首行2.t...原创 2019-03-12 23:51:24 · 158 阅读 · 0 评论