![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java基础
文章平均质量分 80
ruyu00
贵在坚持难在坚持成在坚持
展开
-
29-泛型--泛型限定(泛型上限+泛型下限+上限的体现+下限的体现+通配符的体现)+集合查阅的技巧
一、泛型上限1、迭代并打印集合中的元素(1)集合既可能是List,也可能是Set,用Collection提高扩展性(2)当容器中存放的元素不确定,且里面不准备使用具体类型的情况下,使用通配符注:(1)通配符:?,未知类型。不明确类型时,可以用?来表示,意味着什么类型都可以传入(2)运行时,参数中的泛型<>只要有一个类型具备了,里面就都是统一类型 /*...原创 2018-09-05 17:52:01 · 1905 阅读 · 0 评论 -
26-集合--List子类特点+List子类(Vector+ArrayList+LinkedList)+Enumeration+ArrayList存储自定义对象
一、List的子类及特点1、Vector:有角标。内部是数组数据结构,是同步的。效率低,增删、查询都很慢(几乎不使用Vector)。大小可变(数组100%延长)2、ArrayList:有角标。内部是数组数据结构,是不同步的。替代了Vector,查询的速度快。大小可变(数组50%延长,节省空间,提高效率)3、LinkedList:有角标。内部是链表数据结构(双向链表),是不同步的。效率高...原创 2018-08-26 17:05:39 · 241 阅读 · 0 评论 -
27-集合--Set及其子类(HashSet+LinkedHashSet+TreeSet)+二叉树+Comparable+Comparator+哈希表+HashSet存储自定义对象+判断元素唯一的方式
一、Set1、Set:元素不可以重复,是无序的(存入和取出的顺序不一致)2、Set接口中的方法和Collection中的方法一致3、Set集合的元素取出方式只有一种:迭代器iterator() Set set = new HashSet(); Iterator it = set.iterator(); while (it.hasNex...原创 2018-08-31 15:29:43 · 220 阅读 · 0 评论 -
25-集合--List和Set比较+List+ListIterator+List取出元素的四种方式+List特有的内容
一、List和Set比较1、List(1)有序(存入和取出的顺序一致)(2)元素都有索引(角标)(3)元素可以重复2、Set(1)无序(有可能会有序,但几率不高)(2)元素不能重复(唯一)List和Set最严重的区别在于:是否有重复元素二、List1、有序的collection。此接口的用户可以对列表中每个元素的插入位置进行精确的控制。用户可以根据元素的整数...原创 2018-08-23 21:35:35 · 456 阅读 · 0 评论 -
24-集合--集合概述+Collection+Iterator+集合类的关系图
一、概述1、集合是专门用于存储对象的,存的是对象的地址值(存储任意数量的具有共同属性的对象 -- 意义与作用相同)2、集合的特点:(1)用于存储对象的容器(存的是对象的地址值)(2)集合的长度是可变的(数组长度固定)(3)集合中不可以存储基本数据类型 -- 基本数据类型通过自动拆箱/装箱可以转换成引用数据类型(数组可以存储基本数据类型)3、集合因为内部的数据结构(对象的存储...原创 2018-08-22 13:16:16 · 564 阅读 · 0 评论 -
23-System(Properties)+Runtime+Process+垃圾收集(gc()/runFinalization()/finalize())
一、java.lang.System1、public final class System:系统类,为用户程序提供当前环境下的系统资源。使用前不需要用new语句进行初始化,因为在系统启动时,已自动对系统类进行初始化,分配了相应的内存区2、System类被final修饰,不能实例化。类中的方法和属性都是静态的3、方法(1)static void arraycopy(Object sr...原创 2018-08-16 23:34:33 · 163 阅读 · 0 评论 -
21-Format的子类--java.text.MessageFormat
1、{index}:index必须是非负整数 String msg = "{0}{1}{2}{3}{4}{5}{6}{7}{8}"; Object[] array = new Object[]{"A", "B", "C", "D", "E", "F", "G", "H", "I&quo原创 2018-08-10 18:27:41 · 302 阅读 · 0 评论 -
22-Format的子类--java.text.NumberFormat及其子类java.text.DecimalFormat
一、java.text.NumberFormat1、public abstract class NumberFormat extends Format2、如果格式化多个数值,较为高效的做法是:获取该格式并多次使用它。这样系统就不必多次获取关于语言环境语言和国家/地区约定的信息了 long[] longNum = {20, 99}; NumberForma...原创 2018-08-12 16:41:17 · 195 阅读 · 0 评论 -
28-泛型--概述+擦除&补偿+在集合中的应用+泛型类+泛型方法+泛型接口
一、泛型概述1、泛型:对要操作的数据类型进行指定。是JDK1.5出现的安全机制。泛型是给编译器使用的技术,用在编译时期,提高了编译的安全性(确保类型安全)2、向集合中添加元素,public boolean add(E e); 任何类型都可以接收(添加的元素被提升为Object类型)。通常,会将元素取出,对元素进行特有的操作。为了避免后期出现安全隐患,在定义容器时,就需要明确容器中存储元素的...原创 2018-09-04 11:16:35 · 158 阅读 · 0 评论 -
30-集合--Map+keySet()/entrySet()获取元素+Map.Entry+Map子类的特点+Hashtable+Properties+HashMap/TreeMap存储自定义对象
一、Map1、Map与Collection都是集合框架中的顶层接口。Map集合一次添加一对元素,也称为双列集合(Collection集合一次添加一个元素,也称为单列集合)2、interface Map<K, V>:将键映射到值的对象。一个映射不能包含重复的键,每个键最多只能映射到一个值。即 Map中存储的是键值对,且必须保证键的唯一性3、Map接口提供三种collectio...原创 2018-09-08 12:15:18 · 246 阅读 · 0 评论 -
37-正则表达式(概述+符号+对字符串的常见操作(正则的四个功能))+Pattern+Matcher+练习题
一、正则表达式概述1、正则表达式:用于操作字符串数据,通过一些特定的符号体现2、String类中(1)public boolean matches(String regex):告知此字符串是否匹配给定的正则表达式。调用此方法的str.matches(regex)形式与以下表达式产生的结果完全相同:Pattern.matches(regex, str)注:参数regex:具备一定规则...原创 2018-11-06 17:55:26 · 411 阅读 · 0 评论 -
36-多线程--wait()和sleep()的区别+停止线程+interrupt()方法+守护线程setDaemon()+join()方法+线程组ThreadGroup+创建线程的两种便捷方式+面试题
一、wait()和sleep()的区别1、相同点:wait()和sleep()都是用于将线程冻结的方法2、wait()和sleep()的区别(1)wait():可以指定时间,也可以不指定 sleep():必须指定时间(2)在同步中,对于CPU的执行权和锁的处理不同 wait():释放执行权,释放锁(如果不释放锁,其他线程不能进入,就不能用no...原创 2018-11-02 22:48:52 · 146 阅读 · 0 评论 -
38-反射机制(概述+应用:Tomcat)+Class+获取Class对象的三种方式+获取Class中的(构造函数+字段+方法)+AccessibleObject+类的动态加载+用反射验证集合泛型本质
一、反射机制概述1、Java反射机制是在运行状态中,对于任意一个类(.class文件),都能够知道这个类的所有属性和方法。对于任意一个对象,都能够调用它的任意一个方法和属性。这种动态获取的信息以及动态调用对象的方法的功能称为Java语言的反射机制即 动态获取类中信息,就是Java反射2、如果想要对指定名称的字节码文件进行加载、获取其中的内容并调用,就使用反射技术注:在任何情况下,想...原创 2018-11-11 19:47:47 · 331 阅读 · 0 评论 -
35-多线程--多线程JDK1.5新特性(Lock+Condition)+使用JDK1.5新特性解决多生产者多消费者问题+总结+范例(Lock+Condition-多生产者多消费者问题实际开发代码)
java.util.concurrent.locks包中提供了几个接口:Lock、Condition......一、java.util.concurrent.locks.Lock1、interface Lock:Lock实现提供了比使用synchronized方法(同步函数)和语句(同步代码块)可获得的更广泛的锁定操作2、JDK1.5以后,将同步和锁封装成了对象,并将操作锁的隐式方法定...原创 2018-11-02 00:13:56 · 133 阅读 · 0 评论 -
33-多线程--卖票示例+线程安全(产生原因+解决方式:同步)+同步(同步代码块+同步的好处与弊端+同步的前提+同步函数+卖票示例的同步函数写法+验证同步函数的锁+验证静态同步函数的锁)
一、卖票示例需求:四个窗口,同时售卖100张票,票号为1-1001、没有多线程时的卖票代码class Ticket { //100张票 private int num = 100; public void sale() { //无限循环,没有写break while (true) { if (...原创 2018-10-28 21:16:09 · 270 阅读 · 0 评论 -
34-多线程--死锁+线程间通信+等待唤醒机制+多生产者多消费者问题
一、死锁1、死锁的常见情形之一:同步的嵌套说明:同步的嵌套,至少得有两个锁,且第一个锁中有第二个锁,第二个锁中有第一个锁。eg:同步代码块中有同步函数,同步函数中有同步代码块。下面的例子,同步代码块的锁是obj,同步函数的锁是this。t1线程先执行同步代码块,获取锁obj,需要锁this才能执行同步函数;而t2线程先执行同步函数,获取锁this,需要锁obj才能执行同步代码块。两个线程相...原创 2018-10-31 17:00:09 · 140 阅读 · 0 评论 -
32-多线程--概述+Thread类+多线程的创建方式(继承Thread类+实现Runnable接口)+Runnable接口+线程的名称+线程的状态
一、概述1、进程:对应的是一个应用程序在内存中的所属空间。进程是不直接执行的,它只是在分配该应用程序的内存空间注:(1)如果一个程序在内存中开辟了空间,就代表它在运行。不运行要释放空间(2)关于进程a). 进程是程序(任务)的执行过程 -- 动态性b). 进程持有资源(共享内存、共享线程)和线程 -- 载体c). 线程是系统中最小的执行单元,线程共享进程的资源2、线...原创 2018-10-26 10:19:42 · 463 阅读 · 0 评论 -
31-JDK5.0特性(foreach循环+函数的可变参数+静态导入)
一、foreach循环1、foreach语句:增强型的for循环2、foreach语句的格式: for(类型 变量名 : 单列集合或数组){ ... } /** * 遍历集合 */ List<String> list = new ArrayList<String>(); ...原创 2018-10-04 15:32:36 · 161 阅读 · 0 评论 -
20-Date+Format+DateFormat+SimpleDateFormat+Calendar
一、java.util.Date1、年:y,月:0-11,日:1-31,时:0-23,分:0-59,秒:0-61(值60和61只对闰秒发生)注:只有日是1-xx,其他都是0-xx2、构造函数(1)Date():分配Date对象并初始化此对象,以表示分配它的时间--当前时间(精确到毫秒) -- 常用(2)Date(long date):分配Date对象并初始化此对象,以表示自从标...原创 2018-06-01 13:55:05 · 571 阅读 · 0 评论 -
19-基本数据类型对象包装类
一、概述1、用于描述基本数据类型的类叫做基本数据类型对象包装类(解决基本数据类型的变量不能被当成Object类型变量使用的问题)2、基本数据类型对象包装类有:Byte、Short、Integer、Long、Float、Double、Character、Boolean二、Number1、抽象类Number是BigDecimal、BigInteger、Byte、Short、Intege...原创 2018-05-23 16:37:57 · 326 阅读 · 0 评论 -
09-面向对象--封装+继承
一、封装1、封装:隐藏对象的属性和实现细节,仅对外提供公共的访问方式(将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问)2、封装最常见最基本的动作:创建对象、调用成员、指挥对象做事情3、规范:类中定义的成员变量通常都会被私有化(private),对外提供对应的set、get方法(赋值、获取),set、get方法是为了对数据进行可控(...原创 2018-03-11 23:19:33 · 124 阅读 · 0 评论 -
08-面向对象--基础(概述+对象+变量+构造函数+this+static+代码块+main函数)
一、面向对象的概念1、如何理解面向对象(面向对象的特点)?(1)面向对象是一种常见的思想,符合人们的思考习惯(2)面向对象的出现,将复杂的问题简单化(3)面向对象的出现,让曾经在过程中的执行者,变成了面向对象思想中的指挥者+eg2、面向过程没有被淘汰:面向对象基于面向过程,是将过程封装在一个对象身上,然后通过对象找到这些功能。如果对象有这些功能就直接拿来用,如果没有,不是去写一...原创 2018-03-09 23:42:52 · 132 阅读 · 0 评论 -
03-java简介+类编译执行的过程
1、Java语言是跨平台(跨OS)的,JVM依赖平台,所以JVM是Java程序和操作系统之间的桥梁。2、JRE:Java运行环境,包括JVM+核心类库等 JDK:Java开发工具包,包含Java的开发工具(编译工具javac.exe、打包工具jar.exe等)+JRE3、path:可执行文件.exe的路径(jdk的路径),到bin。path中存放的都是系统中应用程序所在的路径(...原创 2017-11-16 22:13:59 · 178 阅读 · 0 评论 -
07-函数
1、函数的定义格式: 访问修饰符 返回值类型 函数名 (参数类型 形式参数1, 参数类型 形式参数2, ... ) { 方法体 }2、函数的特点(1)定义函数可以将功能代码进行封装(2)便于对该功能进行复用 -- 提高了代码的复用性(3)函数只有被调用才会被执行3、定义函数需要明确两块内容:返回值类型、参数列表(包括参数个数和参数类型)4、return的作用:...原创 2018-01-31 22:48:58 · 103 阅读 · 0 评论 -
05-数组
在java中,数组是一种效率最高的存储和随机访问对象引用序列的方式。所以,在性能要求较高的场景中,优先考虑数组一、一维数组1、数组是同一种类型数据的集合,有序,长度固定,下标从0开始2、声明数组的格式: 格式一:元素类型[] 数组名 = new 元素类型[元素个数或数组长度]; --动态初始化方式 eg: int[] arr = new int[3]; ...原创 2018-01-20 19:17:45 · 140 阅读 · 0 评论 -
06-内存相关
1、Java程序一运行,都必须在内存中开辟空间,因为CPU处理内存中数据速度较快。JVM启动也需要进行空间的开辟2、每一个Java程序在运行时,一共开辟五片区域来分配内存(每一片内存空间中数据的处理方式不同,要单独进行划分和管理)。内存划分:寄存器(CPU在处理)、本地方法区(native修饰的方法,方法内容看不到,会转成调用底层C的代码,调用系统内容。与所在系统相关,JVM分好多版本(windo...原创 2018-01-25 21:27:07 · 121 阅读 · 0 评论 -
04-变量+运算符+流程控制语句
一、常量和变量1、标识符可以由字母、数字、下划线(_)、美元符号($)组成,不能以数字开头,不能是Java关键字和保留字。2、命名尽量简短,且能清楚的表达其作用,做到见名知意。3、Java中有三种注释类型: (1)单行注释 (2)多行注释 (3)文档注释(Java特有,通过javadoc.exe命令从文档注释中提取内容,生成程序的 API 帮助...原创 2017-12-02 23:24:12 · 243 阅读 · 0 评论 -
01-jdk下载及安装
一、下载安装1、jdk下载路径:http://www.oracle.com 甲骨文(oracle)公司官网或 http://www.oracle.com/technetwork/java/javase/downloads/index.html2、安装3、配置环境变量:计算机-->系统属性-->高级系统设置-->环境变量在 "系统变量" 中配置jdk安装路径...原创 2017-11-16 22:08:03 · 200 阅读 · 0 评论 -
10-单例模式(饿汉式+懒汉式)+单例模式涉及的多线程问题
一、单例模式1、设计模式:对问题行之有效的解决方式,是一种思想。有23种设计模式,复用性、灵活性、可维护性2、学设计模式要明确该设计模式可以解决什么问题,明确后就可以知道该设计模式何时使用3、单例设计模式:保证一个类在内存中的对象的唯一性,即一个类在内存中只能有一个对象4、实现单例的步骤:(1)私有化(private)该类的所有构造函数 -- 不允许其他程序用new创建该类对象...原创 2018-03-12 23:12:26 · 323 阅读 · 0 评论 -
14-面向对象--多态+内部类/局部内部类/匿名内部类+Object
一、多态1、多态:某一类事物的多种存在形态,即 一个对象,两(多)种形态2、多态在代码中的体现:父类或者接口的引用指向其子类对象3、多态的好处:提高了代码的扩展性,前期定义的代码可以使用后期的内容4、多态的弊端:前期定义的内容不能使用后期子类的特有内容5、要使用子类特有功能,还得用子类类型为主去调用特有功能。但如果直接使用子类对象,扩展性不强6、多态的前提(1)必须有关...原创 2018-04-06 22:20:07 · 194 阅读 · 0 评论 -
18-StringBuffer/StringBuilder
String是不可变的,会额外产生很多临时变量。如果需要频繁对字符串进行修改操作时,使用StringBuffer或StringBuilder。但StringBuffer/StringBuilder有个局限:最终必须转成字符串才可以使用将数组变成字符串,用StringBuffer的sb.append(数据+分隔符)方法,在for循环中添加数据,最后用sb.toString()返回String类型...原创 2018-05-06 22:26:22 · 217 阅读 · 0 评论 -
17-String
一、字符串基础1、如何创建一个字符串?(1)直接用双引号来表示字符串(存储在字符串常量池中:池中没有就建立,池中有就直接使用)-- 最常用(2)用new的形式实现对象的创建2、String类的特点:String类是不可变类(public final class String),字符串对象一旦被初始化就不会被改变 -- 常量注:String对象不可变,所以可以共享,即直接使用。字...原创 2018-04-30 21:02:58 · 140 阅读 · 0 评论 -
11-代码的执行顺序
一、代码执行顺序1、编译器编译完之后,.class 文件中就包含构造函数了。且静态成员在编译生成 .class 文件时,就已经有所属的类了(静态成员随着类的加载而存在)2、代码执行顺序:(1)当执行 java xxx 命令时,类加载进内存,开辟空间。方法区中,构造函数等非静态方法加载进方法区,静态成员加载进方法区的静态区。以上加载顺序按照代码的执行顺序。方法区中存储的是方法的代码,无论是静态的还是...原创 2018-03-26 23:58:34 · 2361 阅读 · 0 评论 -
16-异常
1、异常是在运行时期发生的不正常情况。java通过面向对象思想,用类的形式将问题封装成对象,用异常类对其进行描述,最终实现将正常流程代码和问题处理代码分离,提高阅读性2、异常体系(Throwable):(1)Error:错误,是由JVM抛出的严重性问题(已经影响到程序的执行),一般不可处理,直接修改程序(2)Exception:异常,可以处理注:无论是错误还是异常,他们都是问题,问...原创 2018-04-18 23:55:49 · 226 阅读 · 0 评论 -
15-包+设置classpath
一、包1、包的作用:(1)对类文件进行分类管理 -- 管理java文件(2)给类提供多层命名空间 -- 解决同名文件冲突(3)包也是一种封装形式2、定义包名用package,写在java程序的第一行,包名间使用 "." 隔开。包名所有字母都小写,一般指定为域名的反向,用于源代码文件的管理,避免重名(包的机制在java中用package来表示,在文件系统中用文件夹来体现)3、类名的全称是:包名.类名...原创 2018-04-12 21:05:26 · 185 阅读 · 0 评论 -
13-面向对象--抽象类+接口
一、抽象类(abstract)1、当一个类在描述事物时,没有足够的信息来描述这类事物,这个类就是抽象类。这类事物都具备某个功能,但功能的内容不明确,该功能不能用{ }结束(定义不了内容),只能用 ; 结束2、抽象类的由来:抽象类也是向上抽取而来的,但是越向上抽取越不具体 -- 功能的声明相同,但具体的实现方式不同3、抽象类的特点:(1)方法只有声明没有实现时,该方法就是抽象方法,需...原创 2018-03-29 22:45:34 · 136 阅读 · 0 评论 -
12-修饰符--final+权限修饰符
修饰符一般是修饰成员一、final1、final关键字:(1)final是一个修饰符,可以修饰类、方法和变量(2)final修饰的类不可以被继承(3)final修饰的方法不可以被覆盖(4)final修饰的变量是一个常量,只能赋值一次注:如果类中有很多功能都不允许被覆写,就将final加在类上。如果类中有一些功能不允许被覆写,此时可将final加在方法上2、在程序中,如果一个数据是固定的,直接使用即...原创 2018-03-27 23:25:32 · 177 阅读 · 0 评论 -
02-设置文件类型的扩展名显示
双击 计算机 --> 工具 --> 文件夹选项 --> 查看 --> 去掉 "隐藏已知文件类型的扩展名" 前面的对勾√原创 2017-11-16 22:10:22 · 267 阅读 · 0 评论