- 博客(36)
- 收藏
- 关注
原创 线程状态和方法
虚拟机中的线程状态有六种,定义在Thread.State():t1.getState():查看当前线程状态。1、新建状态NEW,比如"Thread t = new Thread()2、可运行状态RUNNABLE,调用start()方法3、阻塞BLOCKED,正在等待监视器锁,以便进入一个同步的块/方法,4、等待WAITING,Object的wait()方法、Thread的join()方法、LockSupport的park()方法5、超时等待TIMED_WAITING,调用带超时的wait(300
2021-12-16 23:33:40
108
原创 Lamda表达式
功能:1、避免内部类定义过多2、其 实质 属于函数式编程的概念函数式接口理解Functional Interface(函数式接口)是学习Java8 lamda表达式的关键所在任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数式接口public interface Runnable{ public abstract void run();}对于函数式接口,我们可以通过lamda表达式来创建该接口的对象 //总结Lamda表达式 // 1、只能有一行代码的情况下才能简
2021-12-14 22:57:17
72
原创 Java 线程 静态代理模式
代理对象可以做很多真实对象做不了的事情真实对象专注做自己的事情静态代理就是线程底层的实现原理package Kuang;public class StaticProxy { public static void main(String[] args) { MarryCompany test = new MarryCompany(new You()); test.HappyMarry(); }}interface Marry { void
2021-12-06 22:07:19
87
原创 JAVA 集合框架
集合框架体系如图所示list.clear()list集合中的所有对象都释放了Collection来源于Java.util包,是非常实用常用的数据结构!!!collection主要方法:boolean add(Object o)添加对象到集合boolean remove(Object o)删除指定的对象int size()返回当前集合中元素的数量boolean contains(Object o)查找集合中是否有指定的对象boolean isEmpty()判断集合是否为空Iterato
2021-08-24 16:31:12
32
原创 深拷贝与浅拷贝
浅拷贝:将一个对象复制后,基本数据类型的变量都会重新创建,而引用类型,指向的还是原对象所指向的。深拷贝:将一个对象复制后,不论是基本数据类型还是引用类型,都是重新创建的。简单来说,就是深拷贝进行了完全彻底地复制,而浅复制不彻底。要实现深复制,需要采用流的形式读入当前对象的二进制输入,再写出二进制数据对应的对象。1.克隆羊问题(1) 问题一只羊,姓名为Tom,年龄为1,颜色为白色。现在需要创建10只羊,他们的属性和Tom的属性完全相同。(2) 传统方法实现/** 羊类 **/public c
2021-07-31 17:41:41
50
原创 狂神说JAVA 面向对象编程 多态
多态方法重写:静态方法和非静态方法有区别,方法重写特指非静态方法// Static:和对象实例无关,只和左边的引用类型有关,执行的是引用类型对应的static方法static示列,IDEA中不显示有static子类覆盖static父类的指示,说明无法覆盖,属于类,不属于实例public class Application { public static void main(String[] args) { B son=new B(); son.test();
2021-07-31 10:43:02
63
原创 数组 排序算法 树 与 排序
树节点的度:一个节点的子树数目为该节点的度,树中各节点度的最大值为树的度树的高度:树中节点的最大层次,称为树的高度/深度有序树:若将树中节点各子树看成是从左到右具有次序且不能交换,则该树为有序树无序树:否则为无序树二叉树:第i层上最多有2 IE (i-1) 个节点,深度为K的二叉树至多有2 IE (K) - 1 个节点排序常见算法可以分为两大类: 非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序。线性时间
2021-07-30 22:31:10
129
原创 PERT图
PERT(Program Evaluation and Review Technique)即计划评估和审查技术简单地说,PERT是利用网络分析制定计划以及对计划予以评价的技术。它能协调整个计划的完成。在现代计划的编制和分析手段上,PERT被广泛的使用,是现代化管理的重要手段和方法。构选PERT图1,PERT网络是一种类似流和图的箭线图。它描绘 出项目包含的各种活动的先后次序,标明每项活动的时间或相关的成本。2,对于PERT网络,项目管理者必须考虑以下几点:A,要做哪些工作B,确定时间之间的依
2021-07-27 22:46:46
2573
原创 流程建模语言 UML
泛化关系:结构关系 Generalization面向对象语言中的继承关系,逻辑上可以用"is a"表示代码体现:子类继承父类。UML符号:一条实线+空心箭头。实现关系:类之间 Realization说明:和泛化关系相似,逻辑上也是用"is a"表示。区别在于实现关系继承一个抽象类(abstract、interface)而泛化关系继承一个具体类。代码体现:实现接口或继承某个抽象类。UML符号:一条虚线+空心箭头。组合关系:比聚合关系强的关系。它要求普通的聚合关系中代表整体的对象负责代表部
2021-07-27 21:10:35
73
原创 狂神说JAVA 异常
检查性异常最具代表的检查性异常是用户错误或用户问题引起的异常,这是程序员无法预见的。例如要打开一个不存在的文件,一个异常就发生了,这些异常在编译的时不能被简单地忽略。运行时异常运行时异常是可能被程序员避免的异常。与检查性异常相反,运行时异常可以在编译时被忽略。错误ERROR错误不是异常,而是脱离程序员控制的问题。错误在代码中通常被忽略,例如,当栈溢出时,一个错误就发生了,他们在编译时也检查不到。异常处理机制try catch finally throw throwscatch 后面跟的是想要
2021-07-26 11:47:18
42
原创 狂神说JAVA 面向对象编程 抽象类和接口
抽象类和接口抽象类abstract修饰符可以用来修饰方法也可以修饰类,如果修饰方法,那么这个方法就是抽象方法,如果修饰类,那么这个类就是抽象类抽象类中可以没有抽象方法,但有抽象方法的类一定要声明为抽象类子类继承抽象类,那么就必须要实现抽象类没有实现的抽象方法,否则该子类也要声明为抽象类。1、abstract,抽象类中有抽象方法,只有方法名字,没有方法的实现,只能靠子类去实现它2、不能将new关键字用于抽象类,它是用来让子类继承的,只能靠子类去实现它:约束!3、抽象方法必须在抽象类中4、是抽象
2021-07-21 20:53:20
42
原创 Java 常用类 Date 日期时间
Date 构造函数第一个构造函数使用当前日期和时间来初始化对象。Date( )第二个构造函数接收一个参数,该参数是从1970年1月1日起的毫秒数。Date(long millisec) 序号 方法和描述 1 boolean after(Date date) 若当调用此方法的Date对象在指定日期之后返回true,否则返回false。 2 boolean before
2021-07-18 22:07:28
645
原创 Java 常用类 Java StringBuffer 和 StringBuilder 类
当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况
2021-07-18 14:27:22
56
原创 Java 常用类 Number & Math 类
所有的包装类(Integer、Long、Byte、Double、Float、Short)都是抽象类 Number 的子类。包装类 基本数据类型 Boolean booleanByte byteShort shortInteger intLong longCharacter charFloat floatDouble doubleJava Math 类Java 的 Math 包含了用于执行基本数学运算的属性和方法,如初等指数、对数
2021-07-18 12:45:16
49
原创 狂神说JAVA static关键字详解
静态代码块匿名代码块,可以用来赋初始值构造方法先执行静态代码块,一个类加载的时候执行,有且执行一次后执行匿名代码块,几个实例执行几次再执行匿名代码块,几个实例执行几次public class Person { { System.out.println("2、匿名代码块"); } static { System.out.println("1、静态代码块"); } public Person(){ Syst
2021-07-18 11:17:18
32
原创 狂神说JAVA JVM示列
public class Pet { public String name; public int age; public void shout() { System.out.println("叫了一声"); } public String getName() { return name; } public void setName(String name) { this.name = name;
2021-07-15 23:25:28
29
原创 狂神说JAVA 面向对象编程 封装 继承
JAVA核心思想就是OOP初识面向对象1、物以类聚 类=属性+方法面向对象编程(Object-Oriented Programming,OOP)面向对象编程的本质:以类的方式组织代码,以对象的形式(封装)数据。2、抽象从认识论角度考虑:先有对象后有类。对象,是具体的事物。类,是抽象的,是对对象的抽象。从代码运行的角度考虑:先有类后又对象。类是对象的模板。方法回顾和加深1、方法的定义修饰符返回类型break和return的区别break:跳出switch,结束循环continue
2021-07-14 22:29:22
48
原创 狂神说JAVA 数组 排序算法 冒泡排序 快速排序
public class Demo08 { public static void main(String[] args) { int[] a={5,9,2,4,3,1,6}; System.out.println(Arrays.toString(a)); System.out.println("========="); int[] sort=sort(a); System.out.println(Arrays.toStr
2021-07-14 20:20:15
45
原创 狂神说JAVA Arrays类,用来对Array进行操作
Arrays类数组工具类java.util.Arrays由于数组对象本身并没有什么方法可以供我们调用,但API中提供了一个工具类Arrays供我们使用,从而可以对数据对象进行一些基本操作。Arrays类中的方法都是static修饰的静态方法,在使用的时候可以直接使用类名进行调用,而“不用”使用对象来调用( 注意是“不用”,而不是“不能” )具有以下常用功能给数组赋值:通过Arrays.fill方法。给数组排序:通过Arrays.sort方法,默认升序比较数组:通过Arrays.equals方法
2021-07-05 21:22:24
40
原创 狂神说JAVA 数组、三种初始化和内存分析
声明数组变量dataType[] arrayRefVar; // 首选的方法 或dataType arrayRefVar[]; // 效果相同,但不是首选方法多维数组String str[][] = new String[3][4];
2021-06-29 21:32:15
34
原创 狂神说JAVA JAVA方法 详解
何谓方法Java方法是语句的集合,它们在一起执行一个功能。方法是解决一类问题的步骤的有序组合方法包含于类或对象中方法在程序中被创建,在其他地方被引用方法的优点1. 使程序变得更简短而清晰。2. 有利于程序维护。3. 可以提高程序开发的效率。4. 提高了代码的重用性。方法的设计规则 方法的本意是功能块,就是实现某个功能的语句块的集合,我们设计方法的时候,最好保持方法的原子性,就是一个方法只完成一个功能,这样利于我们后期的扩展方法的命名规则1.方法的名字的第一个单词应以小写字母作
2021-06-26 22:20:45
195
原创 狂神说JAVA Java语言初识 MarkDown 颜色列表
我是黑体字我是微软雅黑我是华文彩云我是红色我是绿色我是蓝色我是尺寸我是黑体,绿色,尺寸为5 颜色名 十六进制颜色值 颜色 AliceBlue #F0F8FF rgb(240, 248, 255) AntiqueWhite #FAEBD7 rgb(250, 235, 215) Aqua #00FFFF
2021-06-26 11:29:47
55
原创 狂神说JAVA 流程控制 用户交互Scanner I/O if switch while
用户交互Scannernext():1、一定要读取到有效字符后才可以结束输入。2、对输入有效字符之前遇到的空白,next() 方法会自动将其去掉。3、只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。next() 不能得到带有空格的字符串。nextLine():1、以Enter为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符。2、可以获得空白。hasNextInt()nextInt() public static void main(S
2021-06-25 21:19:15
47
原创 狂神说JAVA 基础语法 运算符 & 优先级 & 三元表达式
运算符算术运算符+ 加法 - 相加运算符两侧的值 A + B 等于 30- 减法 - 左操作数减去右操作数 A – B 等于 -10* 乘法 - 相乘操作符两侧的值 A * B等于200/ 除法 - 左操作数除以右操作数 B / A等于2% 取余 - 左操作数除以右操作数的余数 B%A等于0++ 自增: 操作数的值增加1 B++ 或 ++B 等于 21(区别详见下文)-- 自减: 操作数的值减少1 B-- 或 --B 等于 19(区别详见下文)关系运算符== 检查如果两个操作数的值是否
2021-06-24 21:14:42
343
原创 狂神说JAVA 基本语法 标识符 类型转换 变量 常量 作用域 修饰符
JAVA强类型语言自动类型转换低----------------------------------------------------高byte,short,char->int->lonf->float->double强制类型转换高----------------------------------------------------低(类型)变量名注意点1、不能对布尔进行转换2、不能把类型转换为不相干的类型3、转换的时候可能存在类型溢出或精度问题4、把高容量
2021-06-22 22:43:35
37
原创 狂神说JAVA 基础语法 数据类型扩展
整数扩展进制二进制0b八进制00~7十进制十六进制0x0~9A~F浮点数扩展float有限 离散 舍入误差 大约 接近不等于double public static void main(String[] args) { int a = 0b10; int b = 10; int c = 010; int d= 0x10; System.out.println(a); Syst
2021-06-20 22:55:20
40
原创 狅神说JAVA 数据类型
基本类型 primitive type数值类型整数类型~bash浮点类型字符类型布尔类型引用类型 reference type类接口数组
2021-06-20 10:36:17
45
原创 狅神说JAVA Java语言初识 JDK JRE
三高:高可用、高并发、高性能JDK:JAVA DEVELOPMENT KIT 开发者工具,包含JRE&JVMJRE:JAVA RUNTIME ENVIRONMENT 运行环境JVM:JAVA VIRTUAL MACHINE 虚拟机write once,run anywhere
2021-06-17 22:09:59
49
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人