javase
java基础知识
ShakeSharkPP
这个作者很懒,什么都没留下…
展开
-
java多线程06 线程协作 线程通信(管程法,信号灯法) 线程池
线程协作生产者消费者模式线程通信方法名作用wait()表示线程一直等待,直到其他线程通知,与sleep不同,会释放锁wait(long timeout)指定等待的毫秒数notify()唤醒一个处于等待状态的线程notifyAll()唤醒同一个对象上所有调用 wait() 方法的线程,优先级别高的线程优先调度注意:均是 Object 类的方法,都只能在同步方法或者同步代码块中使用,否则会抛出异常 IllegalMonitorStateException原创 2020-06-17 10:41:21 · 218 阅读 · 0 评论 -
java多线程 05 线程同步方法 CopyOnWriteArrayList 死锁 lock锁 synchronized
线程同步并发:多个线程操作同一个资源线程同步 – 等待机制形成条件:队列|锁机制 synchronized解决线程安全性同步方法synchronized 关键字 包括两种用法:synchronized 方法和 synchronized 块synchronized 方法控制对“对象”的访问,每个对象对应一把锁,每个 synchronized 方法都必须获得调用该方法的对象的锁才能执行,否则线程会堵塞,方法一旦执行,就独占该锁,直到该方法返回才释放锁,后面被阻塞的线程才能获得这个锁,继续执行若原创 2020-06-16 11:38:15 · 290 阅读 · 0 评论 -
java多线程 04线程状态观测 线程优先级 守护线程
线程状态观测NEW:尚未启动的线程处于此状态RUNNABLE:在 java 虚拟机中执行的线程处于此状态BLOCKED:被阻塞等待监视器锁定的线程处于此状态WAITING:正在等待另一个线程执行特定动作的线程处于此状态TIMED_WAITING:正在等待另一个线程执行动作达到指定等待时间的线程处于此状态TERMINATED:已退出的线程处于此状态package basic;public class TestState { public static void main(Str原创 2020-06-16 05:49:32 · 129 阅读 · 0 评论 -
java 多线程 03 线程状态 线程方法 线程停止 线程休眠 线程礼让
线程状态new 新生状态Thread t = new Thread()线程对象一旦创建就进入到新生状态就绪状态当调用 start() 方法,线程立即进入就绪状态,但不意味着立即调度执行;(调度进入运行状态)阻塞状态当调用 sleep,wait 或同步锁定时,线程进入阻塞状态,就是代码不往下执行,阻塞事件解除后,重新进入就绪状态,等待 cpu 调度执行运行状态进入运行状态,线程才真正执行线程体的代码块dead 死亡状态线程中断或者结束,一旦进入死亡状态,就不能再次启原创 2020-06-15 10:10:41 · 167 阅读 · 0 评论 -
java多线程 02 静态代理 lambda表达式
静态代理真实对象(目标对象)和代理对象要实现同一个接口代理对象要代理真实角色好处:代理对象可以做很多真实对象做不了的事情 真实对象专注做自己的事情package basic;public class StaticProxy { public static void main(String[] args) { You you = new You(); new Thread(()-> System.out.println("i love you")).原创 2020-06-15 07:55:28 · 134 阅读 · 0 评论 -
java多线程 - 01 多线程的创建 Thread Runnable Callable
多线程 multithreading多线程:多条执行路径,主线程和子线程并行交替执行程序:指令和数据的有序集合,本身是没有任何运行的含义,是一个静态的概念进程 process:执行程序的一次执行过程,是一个动态的概念。是系统资源分配的单位通常一个进程中可以包含若干个线程,一个进程至少有一个线程,线程是CPU调度和执行的单位核心概念线程是独立的执行路径在程序运行时,即使没有自己创建线程,后台也会有多个线程,如主线程,垃圾回收(gc)线程main() 称为主线程,为程序的入口,用于执行整个程原创 2020-06-14 02:55:27 · 92 阅读 · 0 评论 -
网络编程基础知识 02 - udp 消息发送与接收 网络资源下载
TOMCAT服务端自定义 STomcat 服务器 S客户端自定义 C浏览器 BUDP发消息:不用连接,需要知道对方的地址发送消息package net.internet;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;import java.net.SocketException;// don't need connect server原创 2020-06-12 10:01:05 · 102 阅读 · 0 评论 -
Java高级语言 - GUI 04 swing 窗口 面板 弹窗 按钮 单选框 复选框
Swing窗口 面板 Jframepackage com.swing.jframe;import javax.swing.*;import java.awt.*;public class JFrameDemo01 { public static void main(String[] args) { new MyJFrame2().init(); }}class MyJFrame2 extends JFrame{ public void init(){原创 2020-06-08 07:56:08 · 392 阅读 · 2 评论 -
java高级语言 - GUI 02 简单计算器的实现 组合 内部类优化
简易计算器组合大于继承class A extends B{ // inheritance}class A{ public B b; // combination // refer!}codepackage com.zepei;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;public class TestCalculator {原创 2020-06-07 06:56:31 · 128 阅读 · 0 评论 -
java高级语言 -GUI 01 组件 容器 布局管理器事件监听 文本框
GUIGUI核心技术:Swing AWT界面不美观,需要jre环境AWTabstract windows tools包含了很多的类和接口,用于 GUI 编程元素:窗口,按钮,文本框java.awt组件:component Button TextArea Label… – (存放在容器中) container: Window: Frame, Dialog panel: AppletFRAMEpackage com.zepei;import java原创 2020-06-07 06:17:00 · 192 阅读 · 0 评论 -
java高级语言 -I/O流 05 转换流 打印流 数据流
转换流(InputStream)提供了在字节流和字符流之间的转换,属于字符流,处理流InputStreamReader:将一个字节的书流流转换为字符的输入流OutputStreamReader:将一个字符的输出流转换为字节的输出流解码:字节、字节数组 ----> 字符数组,字符串编码:字符数组、字符串 ----> 字节、字节数组字符集:charset输入流测试package com.io.inputstream;import org.junit.Test;import原创 2020-06-06 06:48:07 · 85 阅读 · 0 评论 -
java高级语言 - I/O 流04 缓冲流
缓冲流作用:提高流读取和写入(文件处理)的效率处理非文本文件: BufferedInputStream BufferedOutputStream BufferedReader BufferedWriter缓冲流复制文件package com.io.readerwriter;import org.junit.Test;import java.io.*;// test bufferStreampublic class Demo06 { // @Test原创 2020-06-05 11:23:17 · 121 阅读 · 0 评论 -
java高级语言 -I/O流03 字节流 文件复制
I/O 流不能使用字符流来处理图片等字节数据字节流读取图片与复制package com.io.readerwriter;import org.junit.Test;import java.io.*;public class Demo03 { @Test public void testFileInputStream(){ FileInputStream fr = null; FileOutputStream fw = null;原创 2020-06-05 04:05:39 · 93 阅读 · 0 评论 -
java高级语言-I/O流02 文件的读取与写入
I / O 流流的分类处理设备之间的数据传输;读/写文件,网络通讯等按操作数据单位不同分:字节流(8 bit),字符流(16 bit)按数据流的流向不同分为:输入流,输出流按流的角色的不同分为:节点流,处理流流的体系结构抽象基类字节流字符流输入流InputStreamReader输出流OutputStreamWriter抽象基类节点流(或文件流)缓冲流(处理流的一种)InputStreamFileInputStreamB原创 2020-06-05 02:17:27 · 119 阅读 · 0 评论 -
java高级语言 - I/O流 01
I/O 流input / outputFile 类file类的一个对象代表一个文件或一个文件目录(文件夹)file类的声明在java.io包下相对路径:相较于某个路径下,指明的路径绝对路径:包含盘符在哪点文件或文件目录点路径创建 File 类实例File(String filePath);File(String parentPath,String childPath);File(File parentFile,String childPath)package com.io.filec原创 2020-06-04 06:30:32 · 143 阅读 · 0 评论 -
java高级语言-泛型02
泛型 02泛型使用举例https://www.bilibili.com/video/BV1P7411t72L?p=10泛型在继承方面的体现package com.generic;import org.junit.Test;import java.util.AbstractList;import java.util.ArrayList;import java.util.Date;import java.util.List;// 泛型在继承方面的体现/* 虽然类A 是 类原创 2020-06-04 02:01:39 · 198 阅读 · 0 评论 -
java高级语言--泛型
泛型 Generic标签把元素的类型设计成一个参数,这个类型参数叫做泛型。Collection ; List; ArrayList; 这个 就是泛型jdk 1.5 新增特性// TAKE ArrayList AS EXAMPLEpackage com.generic;import org.junit.Test;import java.util.ArrayList;import java.util.Iterator;// genericpublic class Demo00 {原创 2020-06-03 13:20:40 · 132 阅读 · 0 评论 -
java集合05 - treemap/collections/properties
TreeMap向 TreeMap 中添加 key-value,要求 key 必须是由同一个类创建的对象,因为要按照 key 进行排序:自然排序、定制排序package com.collection.set;public class User implements Comparable{ String name; int age; public User(String name, int age) { this.name = name; thi原创 2020-06-02 06:13:51 · 91 阅读 · 0 评论 -
java集合04 - map/hashmap/linkedhashmap
MapMap实现类的结构及特点Map:双列数据,存储key-value对的数据|----- HashMap:作为Map的主要实现类:线程不安全,效率高;可以存储null的key和value |----- LinkedHashMap:保证遍历map元素时,可以按照添加的顺序实现遍历。原因:在原有的HashMap底层结构基础上,添加了一对指针,指向前一个和后一个元素。对于频繁的遍历操作,此类执行效率高于HashMap|----- TreeMap:保证按照添加的key-value对进行排序,实现排序原创 2020-06-02 03:46:36 · 120 阅读 · 0 评论 -
java集合-set练习题
练习题TreeSet练习题目:定义一个Employee类,该类包含:private 成员变量 name age birthtday,其中birthday为MyDate类的对象。并为每一个属性定义 getter, setter 方法,并重写toString方法输出name age birthdayMyDate类包含: private 成员变量 year month day,并为每一个属性定义getter,setter方法创建该类的5个对象,并把这些对象放入TreeSet集合中分别按照以下两种方式对原创 2020-06-01 06:43:10 · 1934 阅读 · 0 评论 -
java集合03-set,hashset,linkedhashset,treeset
Set接口无序,不可重复具体实现类:HashSet LinkedHashSet TreeSetset接口的框架结构HashSet:作为set接口的主要实现类; 线程不安全,可以存储null值LinkedHashSet:作为HashSet的子类:遍历其内部数据时,可以按照添加的顺序遍历TreeSet:可以按照添加对象的指定属性,进行排序set接口中没有额外定义新的方法,使用的都是collection中声明过的方法。要求:向set中添加的数据,其所在类一定要重写hashCode(原创 2020-06-01 01:04:16 · 189 阅读 · 0 评论 -
java数组排序算法02-快速排序,归并排序,基数排序,堆排序
java数组排序算法快速排序分治法:比大小,再分区从数组中取出一个数,作为基准数分区:将比这个数大或等于的数全放到他的右边,小于他的数全放到他的左边再对左右区间重复第二步,直到各区间只有一个数package com.array.arraysort;import java.util.Arrays;// 分治法:比大小,再分区public class QuickSort { public static void main(String[] args) { int原创 2020-05-31 11:48:18 · 154 阅读 · 0 评论 -
java集合02-list
集合foreachjdk5.0新增foreach,遍历collection和数组package com.collection;import java.util.ArrayList;import java.util.Collection;public class Demo03 { public static void main(String[] args) { test(); } public static void test(){ Co原创 2020-05-31 06:32:46 · 172 阅读 · 0 评论 -
java集合01-集合框架,方法,迭代器
集合集合框架的概述java集合就像是一个容器,可以动态的把多个对象的引用放入容器中java集合类可以用于存储数量不等的多个对象,还可以用于保存具有映射关系的关联数组集合、数组都是对多个数据进行存储操作的结构,简称jiava容器。说明:此时的存储,主要是指内存层面的存储,不涉及到持久化的存储(.txt .jpg .avi 数据库)2.1 数组在存储多个数据方面的特点一旦初始化以后,长度确定,不可变数组一旦定义好,其元素的类型也就确定了。比如String[] arr; int[] a原创 2020-05-31 03:56:14 · 193 阅读 · 0 评论 -
java常用类05-file类
file classJava.io.file class: file and directory常见操作与方法package com.commonclass.file;import java.io.File;import java.io.IOException;import java.util.Date;// test common use of file classpublic class Demo00 { public static void main(String[] a原创 2020-05-29 06:20:13 · 76 阅读 · 0 评论 -
jav常用类-时间处理相关类
时间处理相关类https://www.bilibili.com/video/BV1bW411o7TJ?p=91970年1月1日00:00:00为基准时间,度量单位为毫秒long now = System.currentTimeMillis();public class Demo00 { public static void main(String[] args) { Date d = new Date(2000); System.out.println原创 2020-05-29 03:42:46 · 4167 阅读 · 0 评论 -
java常用类01-包装类,string类
java常用类包装类基本数据类型包装类byteBytebooleanBooleanshortShortcharCharacterintIntegerlongLongfloatFloatdoubleDoublepublic class Demo00 { public static void main(String[] args) { // 基本类型转换为integer对象 Integ原创 2020-05-28 14:31:28 · 152 阅读 · 1 评论 -
java常用类02-string
java常用类String类hashCode()返回字符串的哈希码(相当于一个地址,用户指定字符串存放的地址,在hashset中大量使用。indexOf()public class Demo03 { public static void main(String[] args) { String str = "123"; int index = str.indexOf("1"); System.out.println(index); }原创 2020-05-28 14:28:47 · 114 阅读 · 0 评论 -
java数组排序算法01-冒泡,选择,希尔排序,插入排序
java数组排序算法冒泡排序原理:数组元素两两比较,交换位置,大元素往后放,经过一轮比较后,最大的元素,就会出现在最大索引处。O(n^2)public class BubbleSort { public static void main(String[] args) { int[] arr = {1,34,23,3,45,6}; int[] arr2 = bubble(arr); for (int i = 0; i < arr2.leng原创 2020-05-28 07:22:07 · 87 阅读 · 0 评论 -
java数组专题--数组,二维数组,数组操作
java数组数组的定义public class Demo00 { public static void main(String[] args) { int[] arr = new int[5]; double arr2[] = new double[10]; }}数组的初始化为数组中的数组元素分配内存空间,并为每个数组元素复制动态初始化:只指定长度,由系统给出初始化值静态初始化:给出初始值,由系统决定长度public class Demo原创 2020-05-28 01:14:35 · 207 阅读 · 0 评论 -
Java基础知识-异常处理机制
异常机制Exception检查性异常:用户错误或问题引起的,例如打开一个不存在的文件运行时异常:可以在编译时被忽略错误ERROR:不是异常,是脱离程序员控制的问题,例如:栈溢出,编译时也检查不到异常处理框架把异常当作对象处理Java.lang.Throwable 分为错误和异常两大类错误发生时,jvm一般会选择终止线程exception通常可以被程序处理运行时异常RuntimeExceptionArrayIndexOutOfBoundsException 数组下标越界NullPoi原创 2020-05-27 02:19:44 · 98 阅读 · 0 评论 -
java面向对象06 - 抽象类,接口,内部类
抽象类在类中使用abstract关键字public abstract class Action {}// 抽象类 extends 单继承 (接口可以多继承)public abstract class Action { // 约束,有人帮我们实现 // abstrct 抽象方法,只有方法名字,没有方法的实现 public abstract void doSomething(); }// 抽象类的所有方法必须由子类实现// 继承抽象类的子类一定要实现他所继承类原创 2020-05-26 09:44:40 · 172 阅读 · 1 评论 -
java面向对象05 - instanceof,static
instanceof 关键词(类型转换)引用类型 判断一个对象是什么类型System.out.println(x instanceof y); 能不能编译通过:x 和 y之间是否存在父子关系,即x 指向的实际类型是否是 y 的子类型// parentpublic class Person { public void run(){ System.out.println("run"); }}// childpublic class Student extends原创 2020-05-26 08:12:02 · 91 阅读 · 0 评论 -
java面向对象04-封装,继承,多态
java三大特征封装高内聚:类的内部数据操作细节自己完成,不允许外部干涉低耦合 :仅暴漏少量的方法给外部使用属性私有 get/set// classpublic class Student { // 属性私有 private String name; // name private int id; // student id private char sex; // gender private int age; // 提供一些可以操作这个属性的原创 2020-05-26 03:51:16 · 115 阅读 · 0 评论 -
java面向对象03-类与对象小结
类与对象小结类是一个模版(抽象),对象是一个具体的实例方法的定义与调用对象的引用引用类型:除基本类型(8)以外的对象是通过引用来操作的 栈 —> 堆(地址)对象的属性:字段 field 成员变量默认初始化:数字:0 0.0; char:u0000; boolean:false; 引用:null修饰符 属性类型 属性名 = 属性值;对象的创建和使用必须使用new创建对象,构造器 Person zzp = new person();对象的属性 zzp.name原创 2020-05-26 01:14:37 · 109 阅读 · 0 评论 -
java面向对象02--创建对象内存分析
创建对象内存分析public class Application { public static void main(String[] args) { Pet dog = new Pet(); dog.name = "bubby"; dog.age = 3; dog.shout(); System.out.println(dog.name); System.out.println(dog.name);原创 2020-05-25 04:51:17 · 102 阅读 · 0 评论 -
java面向对象01 (方法回顾,构造器)
面向对象 01OOP:object-oriented programming属性+方法是一个类宏观上整体使用面向对象分析整个系统,微观使用面向过程面向对象编程的本质是:以类的方式组织代码,以对象的形式组织(封装)数据三大特性:封装 继承 多态认识论的角度:先有对象后有类对象,是具体的事物类是对对象的抽象代码运行角度:先有类后有对象。类是对象的模版方法的定义修饰符与返回类型// Demo01 类public class Demo01 { // main 方法 一个程序中只原创 2020-05-25 03:49:08 · 90 阅读 · 0 评论 -
java基础知识-数组02 (稀疏数组,多维数组,冒泡排序)
多维数组数组的数组,其中的每一个元素都是一个一维数组int a[][] = new int[2][5] // 一个两行五列的数组--------------------------------------------------public class ArrayDemo05 { public static void main(String[] args) { int[][] arr = {{1,2},{2,4},{4,5},{5,6}}; System.o原创 2020-05-24 11:11:00 · 158 阅读 · 0 评论 -
java基础知识-数组01
数组相同类型数据的有序集合,可以通过下标访问每一个数组元素数组也是对象,数组元素相当于是对象的成员变量数组的声明和创建声明// array type array name int[] nums1; // definition, prefer int nums2[];创建int[] num = new int[10];dataType[] arrayRefVar = new dataType[arraySize];数组元素通过索引访问,索引从0原创 2020-05-24 09:26:38 · 125 阅读 · 0 评论 -
java实现简单计算器-switch scanner method
java实现简单计算器scanner实现用户多次输入数据import java.util.Scanner;public class ScannerTest {public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str=null; while(!(str=sc.nextLine()).equals("exit")){//当输入的数据是exit退出输入 System.ou原创 2020-05-24 06:02:14 · 272 阅读 · 0 评论