![](https://img-blog.csdnimg.cn/20190918135101160.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java1.8语言学习
记录学习Java基础的每一天!
求学旅途
一名求学者
展开
-
java对象数组的初始化 看完我悟了
public static void main(String[] args) { String[] str = new String[10];//1 初始化数组 for (int i = 0; i < 10; i++){ System.out.println(str[i]);//打印出来的是null } for (int i = 0; i < 10; i++){ str[i] =...转载 2020-12-29 16:41:29 · 1938 阅读 · 0 评论 -
Java并发编程实用工具类JUC的各种场景应用全解
一、JUC1、SaleTicketDemo.javaimport java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;/** * @author yht * @create 20:46 * * 题目:三个售票员 卖出 30张票 * 笔记:如何编写企业级的多线程代码 * 固定的编程套路+模板是什么? * 1.在高内聚,低耦合的前提下原创 2020-09-08 22:52:19 · 3134 阅读 · 0 评论 -
Java43——泛型
一、泛型的理解1.泛型的概念所谓泛型,就是允许在定义类、接口时通过一个标识表示类中某个属性的类型或者是某个方法的返回值及参数类型。这个类型参数将在使用时(例如,继承或实现这个接口,用这个类型声明变量、创建对象时确定(即传入实际的类型参数,也称为类型实参)。2.泛型的引入背景集合容器类在设计阶段/声明阶段不能确定这个容器到底实际存的是什么类型的对象,所以在JDK1.5之前只能把元素类型设计为Object,JDK1.5之后使用泛型来解决。因为这个时候除了元素的类型不确定,其他的部分是确定的,例如关原创 2020-09-07 21:34:32 · 625 阅读 · 0 评论 -
Java42——Collections工具类的实用
Collections工具类1.作用:操作Collection和Map的工具类2.常用方法:reverse(List):反转 List 中元素的顺序shuffle(List):对 List 集合元素进行随机排序sort(List):根据元素的自然顺序对指定 List 集合元素升序排序sort(List,Comparator):根据指定的 Comparator 产生的顺序对 List 集合元素进行排序swap(List,int, int):将指定 list 集合中的 i 处元素和 j 处元素进原创 2020-09-07 21:06:42 · 109 阅读 · 0 评论 -
Java41——Map接口
双列集合框架:Map1.常用实现类结构|----Map:双列数据,存储key-value对的数据 ---类似于高中的函数:y = f(x)* |----HashMap:作为Map的主要实现类;线程不安全的,效率高;存储null的key和value* |----LinkedHashMap:保证在遍历map元素时,可以照添加的顺序实现遍历。* 原因:在原的HashMap底层结构基础上,添加了一对指针,指向前一个和后一个元素...原创 2020-09-07 21:03:49 · 131 阅读 · 0 评论 -
Java40——java集合之Collection子接口:List接口、Set接口
一、Collection子接口:List接口1. 存储的数据特点:存储有序的、可重复的数据。2. 常用方法:(记住)增:add(Object obj)删:remove(int index) / remove(Object obj)改:set(int index, Object ele)查:get(int index)插:add(int index, Object ele)长度:size()遍历:① Iterator迭代器方式 ② 增强for循环 ③ 普通的循环3...原创 2020-09-06 15:40:37 · 266 阅读 · 0 评论 -
Java39——java集合之Iterator接口与foreach循环
1.遍历Collection的两种方式:① 使用迭代器Iterator ② foreach循环(或增强for循环)2.java.utils包下定义的迭代器接口:Iterator2.1说明: Iterator对象称为迭代器(设计模式的一种),主要用于遍历 Collection 集合中的元素。 GOF给迭代器模式的定义为:提供一种方法访问一个容器(container)对象中各个元素,而又不需暴露该对象的内部细节。迭代器模式,就是为容器而生。2.2作用:遍历集合Collectiton元素2....原创 2020-09-06 15:30:10 · 421 阅读 · 0 评论 -
Java38——java集合之数组与集合、Collection接口
一、数组与集合1. 集合与数组存储数据概述:集合、数组都是对多个数据进行存储操作的结构,简称Java容器。说明:此时的存储,主要指的是内存层面的存储,不涉及到持久化的存储(.txt,.jpg,.avi,数据库中)2. 数组存储的特点:> 一旦初始化以后,其长度就确定了。> 数组一旦定义好,其元素的类型也就确定了。我们也就只能操作指定类型的数据了。* 比如:String[] arr;int[] arr1;Object[] arr2;3. 数组存储的弊端:* ...原创 2020-09-06 15:13:33 · 146 阅读 · 0 评论 -
Java37——枚举类和注解
一、枚举类的使用1. 枚举类的说明:* 1.枚举类的理解:类的对象只有有限个,确定的。我们称此类为枚举类* 2.当需要定义一组常量时,强烈建议使用枚举类* 3.如果枚举类中只一个对象,则可以作为单例模式的实现方式。2. 如何自定义枚举类?步骤://自定义枚举类class Season{ //1.声明Season对象的属性:private final修饰 private final String seasonName; private final String sea...原创 2020-08-12 18:25:19 · 99 阅读 · 0 评论 -
Java36——Java常用类之其他相关类
1.System类System类代表系统,系统级的很多属性和控制方法都放置在该类的内部。该类位于java.lang包。由于该类的构造器是private的,所以无法创建该类的对象,也就是无法实例化该类。其内部的成员变量和成员方法都是static的,所以也可以很方便的进行调用。方法:native long currentTimeMillis()void exit(int status)void gc()String getProperty(String key)2.Math类java.lan原创 2020-08-12 18:14:40 · 114 阅读 · 0 评论 -
Java35——Java常用类之Java比较器
1.Java比较器的使用背景:Java中的对象,正常情况下,只能进行比较:== 或 != 。不能使用 > 或 < 的但是在开发场景中,我们需要对多个对象进行排序,言外之意,就需要比较对象的大小。如何实现?使用两个接口中的任何一个:Comparable 或 Comparator2.自然排序:使用Comparable接口2.1 说明1.像String、包装类等实现了Comparable接口,重写了compareTo(obj)方法,给出了比较两个对象大小的方式。2.像String..原创 2020-08-12 18:11:49 · 348 阅读 · 0 评论 -
Java34——Java常用类之日期时间API
一、JDK8之前日期时间API1.获取系统当前时间:System类中的currentTimeMillis()long time = System.currentTimeMillis();//返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差。//称为时间戳System.out.println(time);2. java.util.Date类与java.sql.Date类/* java.util.Date类 |---java.sql.Date类...原创 2020-08-12 15:55:18 · 285 阅读 · 0 评论 -
Java33——Java常用类之StringBuffer、StringBuilder
1.String、StringBuffer、StringBuilder三者的对比String:不可变的字符序列;底层使用char[]存储StringBuffer:可变的字符序列;线程安全的,效率低;底层使用char[]存储StringBuilder:可变的字符序列;jdk5.0新增的,线程不安全的,效率高;底层使用char[]存储2.StringBuffer与StringBuilder的内存解析以StringBuffer为例:String str = new String();//char[]原创 2020-08-12 15:05:28 · 86 阅读 · 0 评论 -
Java32——Java常用类之java.lang.String类的使用
1.概述String:字符串,使用一对""引起来表示。1.String声明为final的,不可被继承2.String实现了Serializable接口:表示字符串是支持序列化的。 实现了Comparable接口:表示String可以比较大小3.String内部定义了final char[] value用于存储字符串数据4.通过字面量的方式(区别于new给一个字符串赋值,此时的字符串值声明在字符串常量池中)。5.字符串常量池中是不会存储相同内容(使用String类的equals()...原创 2020-08-11 23:11:33 · 432 阅读 · 0 评论 -
Java31——多线程(超级详细)
一、程序、进程、线程的理解01. 程序(programm)概念:是为完成特定任务、用某种语言编写的一组指令的集合。即指一段静态的代码。02. 进程(process)概念:程序的一次执行过程,或是正在运行的一个程序。说明:进程作为资源分配的单位,系统在运行时会为每个进程分配不同的内存区域03. 线程(thread)概念:进程可进一步细化为线程,是一个程序内部的一条执行路径。说明:线程作为调度和执行的单位,每个线程拥独立的运行栈和程序计数器(pc),线程切换的开销小。补充:内存原创 2020-08-05 21:59:06 · 212 阅读 · 0 评论 -
Java30——异常处理
一、概述1、异常 :在Java语言中,将程序执行中发生的不正常情况称为“异常”。(开发过程中的语法错误和逻辑错误不是异常)2、Java程序在执行过程中所发生的异常事件可分为两类: ①Error:Java虚拟机无法解决的严重问题。如:JVM系统内部错误、资源 耗尽等严重情况。比如:StackOverflowError和OOM。一 般不编写针对性的代码进行处理。/* *...原创 2020-07-29 03:16:09 · 130 阅读 · 0 评论 -
Java29——类的内部成员之五:内部类
类的内部成员之五:内部类1. Java中允许将一个类A声明在另一个类B中,则类A就是内部类,类B称为外部类2.内部类的分类:成员内部类(静态、非静态) vs 局部内部类(方法内、代码块内、构造器内)3.成员内部类: 一方面,作为外部类的成员: >调用外部类的结构 >可以被static修...原创 2020-04-28 23:11:50 · 96 阅读 · 0 评论 -
Java28——接口的应用:工厂设计模式
接口的应用:工厂模式工厂模式:实现了创建者与调用者的分离,即将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。 其实设计模式和面向对象设计原则都是为了使得开发项目更加容易扩展和维护,解决方式就是一个“分工”。社会的发展也是这样,分工越来越细。 原始社会的人:人什么都要会,自己种,自己打猎,自己织衣服,自己治病 现在的人:可以只会一样,其他都不会,只会 Java 也能活,不会做饭,不会...原创 2020-04-28 22:51:57 · 329 阅读 · 0 评论 -
Java27——接口的使用(interface)
接口的使用(interface)1.接口使用interface来定义2.Java中,接口和类是并列的两个结构3.如何定义接口:定义接口中的成员 3.1 JDK7及以前:只能定义全局常量和抽象方法 >全局常量:public static final的.但是书写时,可以省略不写 >...原创 2020-04-10 23:50:16 · 181 阅读 · 0 评论 -
Java26——多态的应用:模板方法设计模式(TemplateMethod)
多态的应用:模板方法设计模式(TemplateMethod)抽象类体现的就是一种模板模式的设计,抽象类作为多个子类的通用模 板,子类在抽象类的基础上进行扩展、改造,但子类总体上会保留抽象 类的行为方式。解决的问题:> 当功能内部一部分实现是确定的,一部分实现是不确定的。这时可以 把不确定的部分暴露出去,让子类去实现。> 换句话说,在软件开发中实现一个算法时,整体步骤很固...原创 2020-04-10 23:19:33 · 157 阅读 · 0 评论 -
Java25——抽象类和抽象方法(abstract关键字的使用)
抽象类和抽象方法(abstract关键字的使用) 1.abstract:抽象的 2.abstract可以用来修饰的结构:类、方法3. abstract修饰类:抽象类 > 此类不能实例化 > 抽象类中一定有构造器,便于子类实例化时调用(涉及:子类对象实例化的全过程) > 开发中,都会提供抽象类的子类,让子类对象...原创 2020-04-10 23:12:08 · 459 阅读 · 0 评论 -
Java24——final关键字的使用
final:最终的1. final可以用来修饰的结构:类、方法、变量2. final 用来修饰一个类:此类不能被其他类所继承。 比如:String类、System类、StringBuffer类3. final 用来修饰方法:表明此方法不可以被重写比如:Object类中getClass();4. final 用来修饰变量...原创 2020-04-01 23:43:16 · 108 阅读 · 0 评论 -
Java23——类的成员之四: 代码块
静态代码块:用static 修饰的代码块1. 可以有输出语句。2. 可以对类的属性、类的声明进行初始化操作。3. 不可以对非静态的属性初始化。即:不可以调用非静态的属性和方法。4. 若有多个静态的代码块,那么按照从上到下的顺序依次执行。5. 静态代码块的执行要先于非静态代码块。6. 静态代码块随着类的加载而加载,且只执行一次。非静态代码块:没有static修饰的代码块1. 可以...原创 2020-04-01 23:22:27 · 163 阅读 · 0 评论 -
Java22——理解main方法的语法
理解main方法的语法1、由于Java虚拟机需要调用类的main()方法,所以该方法的访问权限必须是 public,又因为Java虚拟机在执行main()方法时不必创建对象,所以该方法必须是static的,该方法接收一个String类型的数组参数,该数组中保存执行Java命令 时传递给所运行的类的参数。2、又因为main() 方法是静态的,我们不能直接访问该类中的非静态成员,必须创建该类的...原创 2020-04-01 23:10:31 · 281 阅读 · 0 评论 -
Java21——单例设计模式
单例设计模式:1. 所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例。2. 如何实现? 饿汉式 vs 懒汉式3. 区分饿汉式 和 懒汉式 饿汉式: 坏处:对象加载时间过长。 好处:饿汉式是线程安全的 懒汉式:好处:延迟对象的创建。 目前的写法坏处:线程...原创 2020-04-01 23:02:09 · 83 阅读 · 0 评论 -
Java20——static关键字的使用
static关键字的使用1.static:静态的2.static可以用来修饰:属性、方法、代码块、内部类3.使用static修饰属性:静态变量(或类变量) 3.1 属性,按是否使用static修饰,又分为:静态属性 vs 非静态属性(实例变量) 实例变量:我们创建了类的多个对象,每个对象都独立的拥有一套类中的...原创 2020-04-01 22:51:43 · 104 阅读 · 0 评论 -
Java19——包装类(wrapper)的使用
import org.junit.Test;/* * 包装类的使用: * 1.java提供了8种基本数据类型对应的包装类,使得基本数据类型的变量具有类的特征 * * 2.掌握的:基本数据类型、包装类、String三者之间的相互转换 * * * */public class WrapperTest { //String类型 --->基本数据类型、包装类...原创 2020-04-01 16:58:22 · 277 阅读 · 0 评论 -
Java18——JUnit单元测试
Java中的JUnit单元测试步骤: 1.选中当前工程 - 右键选择:build path - add libraries - JUnit 4 - 下一步2.创建Java类,进行单元测试。 此时的Java类要求:① 此类是public的 ②此类提供公共的无参的构造器3.此类中声明单元测试方法。 此时的单元测试方法:方法的权限是public,没有...原创 2020-04-01 16:48:51 · 205 阅读 · 0 评论 -
Java17—— ==操作符与equals方法
== 和 equals() 区别一、== 的使用:== :运算符1. 可以使用在基本数据类型变量和引用数据类型变量中2. 如果比较的是基本数据类型变量:比较两个变量保存的数据是否相等。(不一定类型要相同) 如果比较的是引用数据类型变量:比较两个对象的地址值是否相同.即两个引用是否指向同一个对象实体 补充: == 符号使用时,必须保证符号左右两...原创 2020-04-01 16:37:56 · 300 阅读 · 0 评论 -
Java16——面向对象特征之三:多态性
面向对象特征之三:多态性1、理解多态性:可以理解为一个事物的多种形态。2、何为多态性: 对象的多态性:父类的引用指向子类的对象(或子类的对象赋给父类的引用)3、多态的使用:虚拟方法调用 有了对象的多态性以后,我们在编译期,只能调用父类中声明的方法,但在运行期,我们实际执行的是子类重写父类的方法。 总结:编译,看左边;运行,看右边4、多态性的...原创 2020-04-01 16:21:26 · 133 阅读 · 0 评论 -
Java15——super关键字的使用
super关键字的使用1.super理解为:父类的2.super可以用来调用:属性、方法、构造器3.super的使用:调用属性和方法 3.1 我们可以在子类的方法或构造器中。通过使用"super.属性"或"super.方法"的方式,显式的调用 父类中声明的属性或方法。但是,通常情况下,我们习惯省略"super." 3.2 特殊情况:当子类和...原创 2020-03-24 10:42:24 · 101 阅读 · 0 评论 -
Java14——方法的重写(override / overwrite)
方法的重写(override / overwrite)1.重写:子类继承父类以后,可以对父类中同名同参数的方法,进行覆盖操作2.应用:重写以后,当创建子类对象以后,通过子类对象调用子父类中的同名同参数的方法时,实际执行的是子类重写父类的方法。3. 重写的规定:方法的声明: 权限修饰符 返回值类型 方法名(形参列表) throws 异常的类型{ ...原创 2020-03-24 08:47:32 · 245 阅读 · 0 评论 -
Java13——面向对象的特征之二:继承性
面向对象的特征之二:继承性一、继承性的好处: ① 减少了代码的冗余,提高了代码的复用性② 便于功能的扩展③ 为之后多态性的使用,提供了前提二、继承性的格式: class A extends B{} A:子类、派生类、subclass B:父类、超类、基类、superclass 1、体现:一旦子类A继承父类B...原创 2020-03-21 23:29:37 · 100 阅读 · 0 评论 -
Java12——package关键字的使用、import关键字的使用
一、package关键字的使用1、package :包2、作用:使用包的概念来区别不同的类的功能。换句话说,将相同结构或类型的类等放在相同的包中,便于管理。3、package 声明在源文件的首行4、命名规范:xxxyyy.zzz.kkk5、每“.”一次就相当于一层文件目录二、import关键字的使用1、import :导入2、我们可以在源文件中使用import显式的...原创 2020-03-20 23:35:39 · 549 阅读 · 0 评论 -
Java11——this关键字的使用
this关键字的使用1、理解为:当前对象 或 当前正在创建的对象2、使用范围:this可以使用在方法或构造器的内部3、可以调用的结构:属性、方法;构造器4、在方法中使用this: 我们可以在方法内,调用当前类的属性或方法,属性或方法前可以使用“this.”的方式,表明调用的是当前对象的属性或方法。 通常情况下,我们都习惯省略this关键字。 ...原创 2020-03-20 23:25:07 · 247 阅读 · 0 评论 -
Java10——类的成员之三:构造器(或构造方法),Constructor
类的成员之三:构造器(或构造方法),Constructor一、基本概念1、构造器的作用:创建类的对象;初始化对象的属性2、说明:1)如果我们没有显式的提供类的构造器的话,则系统会默认给一个类提供默认的构造器:无参数的。2)我们如果显式的声明类的构造器的话,格式为:权限修饰符 类名(形参列表){ }3)同一个类中的多个构造器之间构成重载4)如果我们显式的提供了类的构造器,...原创 2020-03-20 23:14:18 · 158 阅读 · 0 评论 -
Java09——面向对象的特征一:封装与隐藏
面向对象的特征一:封装与隐藏1、封装性设计的由来:创建类类的对象之后,我们可以使用“对象.属性”方式调用或设置属性的值。在赋值时,要考虑到变量的数据类型和储值范围。但是,我们在实际问题,需要额外的给属性赋值时,加入限制条件。这些限制条件不可能在变量声明时做添加,我们只能通过在方法中给变量赋值,同时添加限制条件(setXxx()体现)。同时,我们应该禁止直接通过“对象.属性”的方式给属性赋值。...原创 2020-03-20 23:03:32 · 125 阅读 · 0 评论 -
Java08——方法的重载
方法的重载(overload)1、判别标准:“两同两不同”:同一个类中,相同方法名,且方法的参数列表不同的方法之间,构成方法的重载。参数列表不同:参数的个数不同,参数的类型不同。与参数名没有关系。2、方法之间是否构成重载,与方法是否有返回值,权限修饰符是否不同,没有关系!补充1:不允许在一个类中定义相同的方法。何为相同的方法? 编译器会把同一个类中,相同...原创 2020-03-20 22:47:22 · 153 阅读 · 0 评论 -
Java07——类、类中属性(或成员变量)的声明和使用
一、类的设计以及类中的结构(属性、方法)1、明确相关概念1)属性,又叫做成员变量、field、域、字段2)方法,又叫做成员方法、函数、method3)创建类的对象,又叫做实例化类、类的实例化2、类的实例化及功能的调用1)创建类及提供类的成员:属性、方法2)类的实例化(创建类的对象)3)调用对象的相关结构:“对象.属性”或“对象.方法”二、类中属性(或成员变量)的...原创 2020-03-20 22:29:22 · 482 阅读 · 0 评论 -
Java06——面向对象学习的三条主线
面向对象的三条主线:1、Java中的类及类的成员:成员变量(或属性)、方法(函数)、构造器(或构造方法)、代码块(或初始化块)、内部类2、面向对象的特性:封装性、继承性、多态性、(抽象性)3、其它关键字的使用:this、super、abstract、interface、package、import、。。。...原创 2020-03-20 22:08:25 · 203 阅读 · 0 评论