JavaSE
文章平均质量分 90
我可能是个假开发
hongcaixia
展开
-
线程池
Java 语言中创建线程看上去就像创建一个对象一样简单,只需要 new Thread() 就可以了,但实际上创建线程远不是创建一个对象那么简单。创建对象,仅仅是在 JVM 的堆里分配一块内存而已;而创建一个线程,却需要调用操作系统内核的 API,然后操作系统要为线程分配一系列的资源,这个成本就很高了,所以线程是一个重量级的对象,应该避免频繁创建和销毁。原创 2023-03-02 15:35:22 · 253 阅读 · 0 评论 -
AQS-ReentrantLock
ReentrantLock原创 2023-02-22 12:13:19 · 493 阅读 · 0 评论 -
JDK1.8新特性(超详细)
Java函数式设计实现方法:@FunctionalInterface接口Lambda语法方法引用接口default方法实现一、lambda表达式lambda表达式为匿名内部类的简写,类似于匿名内部类的语法糖;但又区别于匿名内部类(后文会讲解)。匿名内部类特点:基于多态(多数基于接口编程)实现类无需名称允许多个抽象方法Lambda的语法简洁,没有面向对象复杂的束缚。...原创 2019-11-12 09:09:10 · 1156 阅读 · 0 评论 -
面向对象的基本概述
java:面向对象的语言对象:真实存在唯一的事物类: 实际就是对某种类型事物的共性属性与行为的抽取。 抽象的概念.... 车我们从小的时候就不断的接触很多的对象,我们的大脑就会把这些具备相同属性与行为的事物进行分类。在现实生活中就存在对象与类这两种事物。计算机是服务于人类,为了让计算机更加接近我们的生活,这时候就出现了面向对象的计算机语原创 2016-11-03 09:23:32 · 333 阅读 · 0 评论 -
main方法
main函数的详解: public : 公共的。 权限是最大,在任何情况下都可以访问。 private 原因: 为了保证让jvm在任何情况下都可以访问到main方法。static: 静态。静态可以让jvm调用main函数的时候更加的方便。不需要通过对象调用。 不使用static修饰的麻烦:1.需要创建对象调用2.jv原创 2016-11-03 09:34:43 · 375 阅读 · 0 评论 -
super关键字
super关键字:super关键字代表了父类空间的引用。super关键字的 作用:1. 子父类存在着同名的成员时,在子类中默认是访问子类的成员,可以通过super关键字指定访问父类的成员。super.name; super.print();2. 创建子类对象时,默认会先调用父类无参的构造方法,可以通过super关键字指定调用父类的构造方法(带参、无参)。 super();sup原创 2016-11-03 09:41:30 · 639 阅读 · 0 评论 -
方法的重写
目前的问题:父类的功能无法满足子类的需求。方法重写的前提: 必须要存在继承的关系。方法的重写: 子父类出了同名的函数,这个我们就称作为方法的重写。什么是时候要使用方法的重写:父类的功能无法满足子类的需求时。方法重写要注意的事项:1.方法重写时, 方法名与形参列表必须一致。2.方法重写时,子类的权限修饰符必须要大于或者等于父类的权限修饰符。3.方法重写时,原创 2016-11-03 09:44:14 · 365 阅读 · 0 评论 -
final关键字
final(最终、修饰符) final关键字的用法:1. final关键字修饰一个基本类型的变量时,该变量不能重新赋值,第一次的值为最终的。2. fianl关键字修饰一个引用类型变量时,该变量不能重新指向新的对象。3. final关键字修饰一个函数的时候,该函数不能被重写。4. final关键字修饰一个类的时候,该类不能被继承。常量 的修饰符一般为: public原创 2016-11-03 09:47:04 · 347 阅读 · 0 评论 -
值传递
值传递: 调用一个方法的时候,传递给方法的参数 ,实际上传递变量所存储的值。import java.util.*;class Person{ int x =10;}class Demo5 { public static void main(String[] args) { /* int a = 3; int b = 5; changeValue(a,b)原创 2016-11-03 09:51:05 · 329 阅读 · 0 评论 -
接口与接口、接口与类之间的关系
类与接口之间关系: 实现关系。类与接口要注意的事项:1. 非抽象类实现一个接口时,必须要把接口中所有方法全部实现。2. 抽象类实现一个接口时,可以实现也可以不实现接口中的 方法。3. 一个类可以实现多个接口 。疑问: java为什么不支持多继承,而支持了多实现呢?class A{public void print(){System.out.print原创 2016-11-03 09:57:32 · 5606 阅读 · 0 评论 -
多态
面向对象的三大特征:1. 封装2. 继承3. 多态java数据类型图: ┏数值型━┳━整数型:byte short int long ┏基本数据类型━━┫ ┗━浮点型:float double ┃原创 2016-11-03 09:58:26 · 759 阅读 · 0 评论 -
内部类
内部类:一个类定义在另外一个类的内部,那么该类就称作为内部类。内部类的class文件名: 外部类$内部类. 这样命名的好处:便于区分该class文件是属于哪个外部类的。内部类的类别:1. 成员内部类: 定义在类中、方法外,处于成员的位置。成员内部类的访问方式:方式一:在外部类提供一个方法创建内部类的对象进行访问。方式二:在其他类直接创建内原创 2016-11-03 16:05:01 · 249 阅读 · 0 评论 -
Throwable以及错误
异常体系:异常:我们的java程序也是会存在某些不正常 的情况的,这些不正常的 情况我们就统称异常。异常体系:--------| Throwable 所以异常或者错误类的超类------------| Error 错误 错误一般是由于jvm或者是硬件引发的问题,所以我们一般不会通过代码去处理错误的。------------| Exception原创 2016-11-03 20:44:19 · 607 阅读 · 0 评论 -
捕获处理异常
疑问: 下面的信息是通过printStackTrace方法打印出来,那么异常对象从何而来呢? Exception in thread "main" java.lang.ArithmeticException: / by zero at Demo10.div(Demo10.java:10) at Demo10.main(Demo10.java:5)jv原创 2016-11-04 07:32:39 · 485 阅读 · 0 评论 -
自定义异常类
sun提供了很多的异常类给我们用于描述程序中各种的不正常情况,但是sun 给我提供异常类还不足以描述我们现实生活中所有不正常情况,那么这时候我们就需要自定义异常类。需求: 模拟feiQ上线的时候,如果没有插上网线,那么就抛出一个没有插上网线的异常,如果已经插上了网上,那么就正常显示好友列表。自定义异常类的步骤: 自定义一个类继承Exception即可。//自定义了原创 2016-11-04 10:14:24 · 2172 阅读 · 0 评论 -
抛出处理异常
异常的处理方式----抛出处理抛出处理(throw throws)抛出处理要注意的细节:1. 如果一个方法的内部抛出了一个编译时异常对象,那么必须要在方法上声明抛出。2. 如果调用了一个声明抛出编译时异常的方法,那么调用者必须要处理异常。3. 如果一个方法内部抛出了一个异常对象,那么throw语句后面的代码都不会再执行了(一个方法遇到了throw关键字,该方法也会马上停止执原创 2016-11-04 09:04:30 · 566 阅读 · 0 评论 -
运行时和编译时异常
异常体系:--------| Throwable 所有错误或者异常的父类--------------| Error(错误)--------------| Exception(异常) 异常一般都通过代码处理 ------------------| 运行时异常: 如果一个方法内部抛出了一个运行时异常,那么方法上 可以声明也可以不 声明,调用者可以以处理也可以不处理。---原创 2016-11-04 11:15:04 · 348 阅读 · 0 评论 -
finally块
finally 块;finally块的 使用前提是必须要存在try块才能使用。 finally块的代码在任何情况下都会执行的,除了jvm退出的情况。finally非常适合做资源释放的工作,这样子可以保证资源文件在任何情况下都 会被释放。import java.io.*;class Demo6 { public static void main(String[] args)原创 2016-11-04 14:59:45 · 287 阅读 · 0 评论 -
导包语句
包: java中的包就相当于windows文件夹。包的作用:1. 解决类名重复产生冲突的问题。2. 便于软件版本的发布。定义包的格式:package 包名;包名命名规范:包名全部小写。包语句要注意的事项:1. package语句必须位于java文件中中第一个语句。2. 如果一个类加上了包语句,那么该类的完整类名就是: 包名.类名3. 一个原创 2016-11-04 15:30:23 · 1533 阅读 · 0 评论 -
权限修饰符
权限修饰符: 权限修饰符就是控制被修饰的成员的范围可见性。public(公共) protected(受保护) default(缺省) private (大到小)同一个类 true true true原创 2016-11-04 16:18:54 · 327 阅读 · 0 评论 -
jar包
打jar包: 需要使用到jdk的开发工具(jar.exe).jar的用法:使用格式:jar cvf jar文件的名字 class文件或者是文件夹 打jar包要注意的事项:1. 一个程序打完了jar之后 必须要在清单文件上指定入口类: 格式 Main-Class:空格包名.类名2. jar包双击运行仅对于图形化界面的程序起作用,对控制台的程序不起作用。jar原创 2016-11-04 16:21:01 · 308 阅读 · 0 评论 -
模版模式
模板模式 :解决某类事情的步骤有些是固定的,有些是会发生变化的,那么这时候我们可以为这类事情提供一个模板代码,从而提高效率 。模板模式的步骤:1. 先写出解决该类事情其中 的一件的解决方案。2. 分析代码,把会发生变化的代码抽取出来独立成一个方法。把该方法描述成一个抽象的方法。3. 使用final修饰模板方法,防止别人 重写你的模板方法。需求;编写一个计算程序运原创 2016-11-04 19:12:45 · 521 阅读 · 0 评论 -
清除数组中的重复元素个数
目前有数组” int[] arr = {11,2, 4, 2, 10, 11},定义一个函数清除该数组的重复元素,返回的数组存储了那些非重复的元素而且数组不准浪费长度。分析:1. 确定新数组的长度。 原数组的长度-重复元素个数import java.util.*;class Demo12 { public static void main(String[] a原创 2016-11-04 20:19:42 · 2037 阅读 · 0 评论 -
StringBuffer
字符串特点:字符串是常量;它们的值在创建之后不能更改. 字符串的内容一旦发生了变化,那么马上会创建一个新 的对象。 注意: 字符串的内容不适宜频繁修改,因为一旦修改马上就会创建一个新的对象。 如果需要频繁修改字符串 的内容,建议使用字符串缓冲 类(StringBuffer)。 StringBuffer 其实就是一个存储字符 的容器。添加数据:appen原创 2016-11-05 19:43:55 · 270 阅读 · 0 评论 -
System类
System 系统类 主要用于获取系统的属性数据。 System类常用的方法: arraycopy(Object src, int srcPos, Object dest, int destPos, int length) 一般 src - 源数组。srcPos - 源数组中的起始位置。dest - 目标数组。destPos - 目标数据中的起始位置。len原创 2016-11-06 08:44:16 · 353 阅读 · 0 评论 -
RunTime类
RunTime 该类类主要代表了应用程序运行的环境。 getRuntime() 返回当前应用程序的运行环境对象。 exec(String command) 根据指定的路径执行对应的可执行文件。 freeMemory() 返回 Java 虚拟机中的空闲内存量。。 以字节为单位 maxMemory() 返回 Java 虚拟机试图使用的最大内存量。原创 2016-11-06 09:34:42 · 269 阅读 · 0 评论 -
Date类、SimpleDateFormat类
日期类 Date Calendar 日期格式化类 SimpleDateFormat作用1: 可以把日期转换转指定格式的字符串 format()作用2: 可以把一个 字符转换成对应的日期。 parse() 生日被protected修饰的方法不能直接访问,要继承之后才可以calendar类不能直接创建对象,提供了一个静态方法获取该类对象getInt原创 2016-11-06 10:02:12 · 268 阅读 · 0 评论 -
Math类、Random类
Math 数学类, 主要是提供了很多的数学公式。 abs(double a) 获取绝对值 ceil(double a) 向上取整 floor(double a) 向下取整 round(float a) 四舍五入 random() 产生一个随机数. 大于等于 0.0 且小于 1.0 的伪随机 double 值public class Demo4 {原创 2016-11-06 10:38:25 · 289 阅读 · 0 评论 -
线程的通讯
线程通讯: 一个线程完成了自己的任务时,要通知另外一个线程去完成另外一个任务.生产者与消费者wait(): 等待 如果线程执行了wait方法,那么该线程会进入等待的状态,等待状态下的线程必须要被其他线程调用notify方法才能唤醒。notify(): 唤醒 唤醒线程池等待线程其中的一个。notifyAll() : 唤醒线程池所有等待 线程。wait与notify方法要注意...原创 2016-11-08 10:25:28 · 291 阅读 · 0 评论 -
后台线程与join方法
守护线程(后台线程):在一个进程中如果只剩下 了守护线程,那么守护线程也会死亡。 需求: 模拟QQ下载更新包。 一个线程默认都不是守护线程。public class Demo7 extends Thread { public Demo7(String name){ super(name); } @Override public void run() { for原创 2016-11-08 20:32:25 · 302 阅读 · 0 评论 -
ArrayList的原理
集合的体系:----------| Collection 单列集合的根接口----------------| List 如果实现了List接口的集合类,具备的特点: 有序,可重复。--------------------| ArrayList ArrayList 底层是维护了一个Object数组实现 的, 特点: 查询速度快,增删慢。什么时候使用ArrayList: 如果目前原创 2016-11-09 19:54:37 · 384 阅读 · 1 评论 -
LinkedList
集合的体系:----------| Collection 单列集合的根接口----------------| List 如果实现了List接口的集合类,具备的特点: 有序,可重复。--------------------| ArrayList ArrayList 底层是维护了一个Object数组实现 的, 特点: 查询速度快,增删慢。什么时候使用ArrayList: 如果目前原创 2016-11-10 07:52:35 · 261 阅读 · 0 评论 -
Vector
集合 的体系:------------| Collection 单例集合的根接口----------------| List 如果是实现了List接口的集合类,具备的特点: 有序,可重复。 -------------------| ArrayList ArrayList 底层是维护了一个Object数组实现的。 特点: 查询速度快,增删慢。-------------------原创 2016-11-10 16:28:47 · 267 阅读 · 0 评论 -
TreeSet
集合 的体系:------------| Collection 单例集合的根接口----------------| List 如果是实现了List接口的集合类,具备的特点: 有序,可重复。 -------------------| ArrayList ArrayList 底层是维护了一个Object数组实现的。 特点: 查询速度快,增删慢。-------------------原创 2016-11-11 10:54:49 · 347 阅读 · 0 评论 -
String类
String 字符串类: 笔试题目:new String("abc")创建了几个对象? 两个对象, 一个对象是 位于字符串常量池中,一个对象是位于堆内存中。字符串的创建方式:new String("hello"); 如果字符串常量池中已经存在 ,就不会在字符串常量池中创建了 但在堆内存中依然会创建。public class Demo1 { public原创 2016-11-05 10:52:25 · 377 阅读 · 0 评论 -
FileReader、FileWriter
字节流:字节流读取的是文件中的二进制数据,读到的数据并不会帮你转换成你看得懂的字符。 字符流: 字符流会把读取到的二进制的数据进行对应 的编码与解码工作。 字符流 = 字节流 + 编码(解码) 输入字符流:----------| Reader 输入字符流的基类 抽象类-------------| FileReader 读取文件的输入字符流。FileRead原创 2016-11-16 07:10:31 · 321 阅读 · 0 评论 -
引进reader和writer的原因
package cn.itcast.reader;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.util.Arrays;public class Demo1 { public st原创 2016-11-15 20:41:52 · 284 阅读 · 0 评论 -
泛型
泛型是jdk1.5使用的新特性。 泛型的好处: 1. 将运行时的异常提前至了编译时。 2. 避免了无谓的强制类型转换 。 泛型在集合中的常见应用: ArrayList list = new ArrayList(); true 推荐使用。 //以下两种写法主要是为了兼顾新老系统的兼用性问题。 ArrayList原创 2016-11-12 08:01:59 · 259 阅读 · 0 评论 -
BufferedReader、BufferedWriter
输入字符流:-------| Reader 所有输入字符流的基类。 抽象类----------| FileReader 读取文件字符串的输入字符流。----------| BufferedReader 缓冲输入字符流 。 缓冲 输入字符流出现的目的是为了提高读取文件 的效率和拓展了FileReader的功能。 其实该类内部也是维护了一个字符数组记住:缓冲流都不具备读写文原创 2016-11-16 08:46:12 · 345 阅读 · 0 评论 -
Arrays
数组的工具类:Arrays1,二分查找,数组需要有序binarySearch(int[])binarySearch(double[])2,数组排序sort(int[])sort(char[])……2, 将数组变成字符串。 toString(int[])3, 复制数组。copyOf();copyOf(boolean[] original,int n原创 2016-11-12 19:55:55 · 282 阅读 · 0 评论