![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
皮皮逗逗逗
这个作者很懒,什么都没留下…
展开
-
String类
java.lang.String类的使用1.概述String: 字符串,使用一对""引起来表示.1.String 声明为final的,不可被继承2.String 实现了 Serializable 接口: 表示字符串是支持序列化的. 实现了 Comparable 接口: 表示String可以比较大小3.String内部定义了final char[] value 用于存储字符串数据4.通...原创 2020-01-28 00:25:24 · 141 阅读 · 0 评论 -
JDK5.0新增线程创建的方式
方式一: 实现Callable接口.说明:如何理解实现Callable接口的方式创建多线程比实现Runnable接口创建多线程方式强大?1.call()可以返回值的.2.call()可以抛出异常,被外面的操作捕获,获取异常的信息3.Callable是支持泛型的方式二: 使用线程池好处: 1.提高相应速度(减少了创建新线程的时间)2.降低资源消耗(重复利用线程池中线程,不需要每次都创...原创 2020-01-27 20:52:49 · 120 阅读 · 0 评论 -
线程通信
1.线程通信涉及到的三个方法wait(): 一旦执行此方法,当前线程就进入阻塞状态,并释放同步监视器.notify(): 一旦执行此方法,就会唤醒被wait的一个线程.如果有多个线程被wait,就唤醒优先级高的那个.notifyAll(): 一旦执行此方法,就会唤醒所有被wait的线程2.说明:1.wait(),notify(),notifyAll() 三个方法必须使用在同步代码块或同步...原创 2020-01-27 16:04:07 · 110 阅读 · 0 评论 -
死锁问题
1.死锁的理解不同的线程分别占用对方需要的同步资源不放弃,都在等待对方放弃自己需要的同步资源,就形成了线程的死锁.2.说明:1.出现死锁后,不会出现异常,不会出现提示,只是所的线程都处于阻塞状态,无法继续2.我们使用同步时,要避免出现死锁....原创 2020-01-27 15:20:30 · 128 阅读 · 0 评论 -
线程的同步机制
1.背景例子: 创建一个窗口卖票,总票为100张,使用实现Runnable接口的方式1.问题: 卖票过程中,出现了重票,错票 --> 出现了线程的安全问题2.问题出现的原因: 当某个线程操作车票的过程中,尚未操作完成时,其他线程参与进来,也操作车票3.如何解决: 当一个线程a在操作ticket的时候,其他线程不能参与进来,直到线程a操作完ticket时,其他线程才可以开始操作tick...原创 2020-01-25 13:33:53 · 90 阅读 · 0 评论 -
Thread类中的常用的方法
1.start(): 启动当前线程: 调用当前线程的run()2.run():通常需要重写Thread类中的此方法,将创建的线程要执行的操作声明在此方法中3.currentThread(): 静态方法,返回执行当前代码的线程4.getName(): 获取当前线程的名字5.setName(): 设置当前线程的名字6.yield(): 释放当前cpu的执行权7.join(): 在线程a中调...原创 2020-01-25 12:29:27 · 498 阅读 · 0 评论 -
创建多线程的两种方式
方式一: 继承Thread类的方式:1.创建一个继承于Thread类的子类2.重写Thread类的run() --> 将此线程执行的操作声明在run()中3.创建Thread类的子类的对象4.通过此对象调用start():①启动当前线程 ② 调用当前线程的run()说明两个问题:问题一: 我们启动一个线程,必须调用start(),不能调用run()的方式启动线程.问题二: 如...原创 2020-01-25 12:10:18 · 139 阅读 · 0 评论 -
程序,进程,线程的理解
1.程序概念: 是为完成特定任务,用某种语言编写的一组指令的集合.即指一段静态的代码.2.进程概念: 程序的一次执行过程,或是正在运行的一个程序.说明: 进程作为资源分配的单位,系统在运行时会为每个进程分配不同的内存区域3.线程概念: 进程可进一步细化为线程,是一个程序内部的一条执行路径.说明: 线程作为调度和执行的单位,每个线程拥有独立的运行栈和程序计算器,线程切换的开销小....原创 2020-01-24 16:44:26 · 210 阅读 · 0 评论 -
关键字: interface
1.使用说明:1.接口使用interface来定义2.Java中,接口和类是并列的两个结构3.如何定义接口: 定义接口中的成员3.1 JDK7及以前: 只能定义全局变量和抽象方法>全局变量: public static final的,但是书写时,可以省略不写>抽象方法: public abstract的 3.2 JDK8: 除了定义全局常量和抽象方法之外,还可以定义静态方...原创 2020-01-23 14:12:23 · 105 阅读 · 0 评论 -
关键字:abstract
1.可以用来修饰: 类,方法2.具体:abstract修饰类: 抽象类>此类不能实例化>抽象类中一定有构造器,便于子类实例化时调用(涉及: 子类对象实例化的全过程)>在开发中,都会提供抽象类的子类,让子类对象实例化,完成相关的操作 —> 抽象的使用前提: 继承性abstract修饰方法: 抽象方法> 抽象方法指方法的声明,没有方法体> 包含抽象...原创 2020-01-23 00:28:08 · 89 阅读 · 0 评论 -
关键字: final
1.可以用来修饰: 类,方法,变量2.具体的:2.1 final 用来修饰一个类: 此类不能被其他类所继承.比如: String类,System类,StringBuffer类2.2 final 用来修饰方法: 表明此方法不可以被重写比如: Object类中getClass();2.3 final 用来修饰变量: 此时的"变量"就称为是一个常量1.final修饰属性: 可以考虑赋值的位...原创 2020-01-23 00:19:39 · 93 阅读 · 0 评论 -
类的结构: 代码块
类的成员之四: 代码块(初始化块)(重要性较属性,方法,构造器差一些)1.代码块的作用: 用来初始化类,对象的信息2.分类: 代码块要是使用修饰符,只能使用static分类: 静态代码块 vs 非静态代码块静态代码块:内部可以输出语句随着类的加载而执行,而且只执行一次作用: 初始化类的信息如果一个类中定义了多个静态代码块,则按照声明的先后顺序执行静态代码块的执行要优先于非...原创 2020-01-22 23:57:05 · 205 阅读 · 0 评论 -
main()的使用说明
1.mian()方法作为程序的入口2.main()方法也是一个普通的静态方法3.main()方法可以作为我们与控制台交互的方式,(例如,使用Scanner)小结:public static void main(String[] args){//方法体}权限修饰符: private 缺省 protected public ----> 封装性修饰符: static \ final \...原创 2020-01-22 16:06:15 · 349 阅读 · 0 评论 -
关键字:static
1.可以用来修饰的结构: 主要用来修饰类的内部结构属性,方法,代码块,内部类2.static修饰属性: 静态变量(或类变量)2.1 属性,是否使用static修饰,又分为: 静态属性 vs 非静态属性(实例变量)实例变量: 我们创建了类的多个对象,每个对象都独立的拥有一套类中的非静态属性.当修改其中一个对象中的非静态属性时,不会导致其他对象中同样的属性值的修改.静态变量: 我们创建了类...原创 2020-01-05 11:54:29 · 68 阅读 · 0 评论 -
包装类的使用
1.为什么要有包装类(或封装类)为了使基本数据类型的变量具有类的特征,引入包装类.2.基本数据类型与对应的包装类:基本数据类型 : 包装类:byte Byteshort Shortint Integerlong Longfloat Floatdouble Doubleboolea...原创 2020-01-05 11:55:06 · 79 阅读 · 0 评论 -
单元测试方法
Java中的JUnit单元测试步骤:1.中当前工程 - 右键择:build path - add libraries - JUnit 4 - 下一步2.创建Java类,进行单元测试。此时的Java类要求:① 此类是public的 ②此类提供公共的无参的构造器3.此类中声明单元测试方法。此时的单元测试方法:方法的权限是public,没返回值,没形参4.此单元测试方法上需要声明注解:@...原创 2020-01-05 11:57:38 · 818 阅读 · 0 评论 -
Object类的使用
1.java.lang.Object类的说明:1.Object类是所有java类的根父类2.如果在类的声明中未使用extends关键字指明其父类,则默认父亲为java.lang.Object类3.Object类中的功能(属性,方法)就具通用性.属性无: 无方法: equals() / toString() / getClass() / hashCode() / clone() / fi...原创 2020-01-05 11:57:31 · 108 阅读 · 0 评论 -
面向对象的特征三:多态性
1.多态性的理解:可以理解为一个事物的多种形态。2.何为多态性:对象的多态性: 父类的引用指向子类对象(或子类的对象赋给父类的引用)举例:Person p = new Man()Object obj = new Date()3.多态性的使用: 虚拟方法调用 1.有了对象的多态性以后,我们在编译期,只能调用父类中声明的方法,但在运行期,我们实际执行的是子类重写父类的方法.2.总结:...原创 2020-01-05 11:56:45 · 118 阅读 · 0 评论 -
子类对象实例化全过程
1.从结果上看: 继承性子类继承父类以后,就获取了父类中声明的属性或方法.创建子类的对象,在堆空间中,就会加载所父类中声明的属性.2.从过程上看:当我们通过子类的构造器创建子类对象时,我们一定会直接或间接的调用其父类的构造器,进而调用父类的父类的构造器,…直到调用了java.lang.Object类中空参的构造器为止.正因为加载过所的父类的结构.所有才可以看到内存中父类中的结构,子类对象...原创 2020-01-05 11:56:55 · 308 阅读 · 0 评论 -
关键字: Super
1.super 关键字可以理解为: 父类的2.可以用来调用的结构:属性,方法,构造器3.super用属性,方法① 我们可以在子类的方法或构造器中.通过使用"super.属性"或"super.方法"的方式,显示的调用父类中声明的属性或方法.但是,通常情况下,我们习惯省略"super."② 特殊情况: 当子类和父类中定义了同名的属性时,我们要想在子类中调用父类中声明的属性,则必须显示的使用"...原创 2020-01-05 11:57:46 · 64 阅读 · 0 评论 -
方法的重写
1.什么是方法的重写子类继承父类以后,可以对父类中同名同参数的方法,进行覆盖操作2.应用:重写以后,当创建子类对象以后,通过子类对象调用子父类中的同名同参数的方法时,实际执行的是子类重写父类的方法.3.重写规则方法的声明 : 权限修饰符 返回值类型 方法名(形参列表) throws 异常的类型{//方法体}① 约定俗成: 子类中的叫重写的方法,父类中的叫被重写的方法② 子类重写的...原创 2020-01-05 11:57:57 · 185 阅读 · 0 评论 -
继承性
继承性的好处① 减少了代码的冗余,提高了代码的复用性②便于功能的扩展③为之后多态性的使用,提供了前提2.继承性的格式:class A extends B{}A: 子类,派生类,subclassB: 父类,超类,基类,superclass3.子类继承父类以后有哪些不同?① 一旦子类A继承父类B以后,子类A中就获取了父类B中声明的所有属性和方法.② 特别的,父类中声明为privat...原创 2020-01-05 11:58:04 · 85 阅读 · 0 评论 -
关键字: package/ import
1.package的使用说明:①为了更好的实现项目中类的管理,提高包的概念②使用package声明类或接口所属的包,声明在源文件的首行③包,属于标识符,遵循标识符的命名规则,规范,“看见就知道意思”④没’.'一次,就代表一层文件目录2.jdk中的主要包介绍:① java.lang ---- 包含伊西俄java用语言的核心类,比如String Math Integer System 和...原创 2020-01-05 11:58:11 · 71 阅读 · 0 评论 -
关键字: this
1.可以调用的结构: 属性,方法;构造器2.this 调用属性,方法:this理解为: 当前对象 或 当前正在创建的对象在类的方法种,我们可以使用"this.属性"或"this.方法’的方式,调用当前对象属性或方法,但是,通常情况下,我们都选择省略"this.".特殊情况下,如果方法的形参和类的属性同名时,我们必须显示的使用"this.变量"的方式,表名此变量是属性,而非形参.在类的构造器...原创 2020-01-05 11:58:58 · 74 阅读 · 0 评论 -
JavaBean的概念
所谓JavaBean,是指符合如下标准的Java类:1.类是公共的2.一个无参的公共的构造器3.属性,且对应的get,set方法原创 2019-12-02 14:31:06 · 104 阅读 · 0 评论 -
属性赋值的先后顺序
属性赋值的先后顺序:①默认初始化②显示初始化③构造器种初始化④通过"对象.方法"或"对象.属性"的方式赋值以上操作的先后顺序: ① - ② - ③ - ④...原创 2020-01-05 11:59:05 · 419 阅读 · 2 评论 -
构造器
1.构造器的作用构造器的作用:1.创建对象2.初始化对象的信息2.使用说明:1.如果没有显示的定义类的构造器的话,则系统默认提供一个空参构造器2.定义构造器的格式: 权限修饰符 类名(形参列表){}3.一个类种定义的多个构造器,彼此构成重载4.一旦我们显示的定义了类的构造器之后,系统就不再提供默认的空参构造器5.一个类种,至少会有一个构造器....原创 2020-01-05 11:59:12 · 69 阅读 · 0 评论 -
封装和隐藏
1.为什么要由封装性?① 我们程序设计追求"高内聚,低耦合".高内聚: 类的内部数据操作细节自己完成,不允许外部干涉;低耦合: 仅堆外暴露少量的方法用于使用②隐藏对象内部的复杂性,只对外公开简单的接口.便于外界调用,从而提高系统的可扩展性,可维护性.通俗的说,把该隐藏的隐藏起来,该暴露的暴露出来.这就是封装性的设计思想.2.问题的引入当我们创建一个类的对象以后,我们可以通过"对象.属...原创 2020-01-05 11:59:18 · 274 阅读 · 1 评论 -
方法
所谓的方法就是描述类应该具有的功能1.方法的声明:权限修饰符 返回值类型 方法名(形参列表){方法体}2.注意:Java规定的4种权限修饰符:private,public,缺省,protected返回值 类型:分为有返回值和没有返回值有返回值则必须在方法声明时,指定返回值的类型,则就在方法种要使用.return关键字来返回指定类型的变量或常量: ‘return 数据’.没有返回...原创 2019-11-27 22:49:37 · 73 阅读 · 0 评论 -
属性
属性和局部变量相同点:1.定义变量格式: 数据类型 变量名 = 变量值2.先声明,后使用3.变量都其对应的作用域不同点:1.在类中声明的位置不同:属性: 直接定义在类的一对{}内局部变量: 声明在方法内,方法形参,代码块内,构造器形参,构造器内部的变量2.关于权限修饰符的不同属性: 可以在声明属性时,指明其权限,使用权限修饰符.常用的权限修饰符:private,public,...原创 2019-11-25 23:23:35 · 149 阅读 · 0 评论 -
类和对象
1.面向对象学习:1.Java类及类的成员:属性、方法、构造器;代码块、内部类2.面向对象的大特征:封装性、继承性、多态性、(抽象性)3.其它关键字:this、super、static、final、abstract、interface、package、import等2.面向对象与面向过程的理解1.面向过程:强调的是功能行为,以函数为最小单位,需要考虑怎么做2.面向对象:强调具备了功能的...原创 2019-11-24 22:45:50 · 87 阅读 · 0 评论 -
Arrays工具类
1.如何理解1.定义在java.util包下.2.Arrays: 提供了很多操作数组的方法2.使用:1.boolean equals(int[ ] a,int[ ] b): 判断两个数组是否相等 2.String toString(int[ ] a):输出数组信息 3.void fill(int[ ] a,int val): 将指定值填充到数组之中 4.vo...原创 2019-11-21 22:31:12 · 63 阅读 · 0 评论 -
Java二维数组
1.二维数组的声明和初始化先来看看正确的方式:int [ ] [ ] a = new int[ ] [ ] {{1,2,3},{4},{5,6}};//动态初始化String [ ] [ ] a1 = new String[3] [2 ];String [ ] [ ] a2 = new String[3] [ ];其它这样的写法也对:int [ ] a3[ ] = new int...原创 2019-11-20 19:43:39 · 96 阅读 · 0 评论 -
Java的一维数组
1.一维数组的声明和初始化先声明正确的方式如下:int [] m // 声明静态初始化:数组的初始化和数组元素的赋值操作同时进行m = new int [] {1,2,3,4};动态初始化:数组的初始化和数组元素的赋值操作分开进行String name = new String[2]类型自动推断: int[] a = {1,2,3,4,5};以下是错误的方式:int[] a1 =...原创 2019-11-20 19:01:14 · 182 阅读 · 0 评论 -
数组的概述
1.首先我们要理解数组:数组(Array),是多个相同类型数据以一定的顺序排列的集合,并使用一个名字命名通过编号的方式对这些数据进行统一管理2.数组相关的概念:①数组名②元素③角标,下标,索引④数组的长度:元素的个数3.数组的特点:①.数组是序排列的②数组属于引用数据类型的变量。数组的元素,既可以是基本数据类型,也可以是引用数据类型③创建数组对象会在内存中开辟一块连续的空间④...原创 2019-11-19 09:28:46 · 153 阅读 · 0 评论 -
Scanner类的使用
在Java中我们如何从键盘获取不同类型的变量:需要使用Scanner类具体实现步骤:1.先导包: import java.util.Scanner;2.Scanner的实例化:Scanner scan = new Scanner(System.in);3.调用Scanner类的相关方法(next() 、nextXxx()),来获取指定类型的变量注意:需要根据相应的方法,来输入指定类型的值...原创 2019-11-19 09:19:15 · 117 阅读 · 0 评论 -
变量的使用
1.变量的分类首先我们按数据类型分类:数据类型:分为①:基本数据类型,②:引用数据类型。基本数据类型: ①:数值型,②:字符型(char),③:布尔型(boolean)引用数据类型:①:类(class),②:接口(interface)③:数组(【】)而数据型分为:① 整数类型(byte,short,int,long),②:浮点类型(float,double)注意:整型byte(1字节=...原创 2019-11-19 09:09:28 · 145 阅读 · 0 评论 -
Java
1.java关键字的使用定义: 被java语言赋予了特殊含义,用做专门用途的字符串(单词)特点: 关键字中所有字母都为小写用于定义数据类型的关键字class, interface, enum, byte, short, int, long, float, double, char, boolean, void用于定义流程控制的关键字if, else, switch, case, def...原创 2019-11-18 14:24:43 · 137 阅读 · 0 评论