From a164b8297eb4554498aa596e9e7f899f6fa54767 Mon Sep 17 00:00:00 2001 From: my76572 Date: Fri, 25 Jun 2021 00:01:27 +0800 Subject: [PATCH] all --- java_note/Java.md | 124 +++++++++++++++++----------------------------- 1 file changed, 46 insertions(+), 78 deletions(-) diff --git a/java_note/Java.md b/java_note/Java.md index c590391..21e6ce0 100644 --- a/java_note/Java.md +++ b/java_note/Java.md @@ -1,4 +1,4 @@ -# Java +# Java ## 1. java基础 @@ -9,35 +9,9 @@ 1. boolean 2. char 3. byte 、short、int、long - 4. float 、 double - + 4. float 、 double ``` -#### 1.1.2 名词解释 - -- JRE:(java run environment) java程序运行环境,包含jvm和所需的核心类库。 - -- JDK:(java Development kit) java程序开发工具包,包括JRE和开发人员使用的工具(javac.exe编译工具)和(java.exe开发工具) - -- JVM:保证java程序的跨平台运行 - - ```` - JAVA的JVM的内存可分为3个区:堆(heap)、栈(stack)和方法区(method) - - 堆区: - 1.存储的全部是对象,每个对象都包含一个与之对应的class的信息。(class的目的是得到操作指令) - 2.jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身 - 栈区: - 1.每个线程包含一个栈区,栈中只保存基础数据类型的对象和自定义对象的引用(不是对象),对象都存放在堆区中 - 2.每个栈中的数据(原始类型和对象引用)都是私有的,其他栈不能访问。 - 3.栈分为3个部分:基本类型变量区、执行环境上下文、操作指令区(存放操作指令)。 - 方法区: - 1.又叫静态区,跟堆一样,被所有的线程共享。方法区包含所有的class和static变量。 - 2.方法区中包含的都是在整个程序中永远唯一的元素,如class,static变量。 - ```` - - - ### 1.2 String类型 ​ [点击跳转深入String](#深入String) @@ -53,11 +27,9 @@ ````java int[] num; - num = new int[3]; + num = new int[3]; - num[数组key值]; - - int data[] = {1, 2, 4, 545, 11, 32, 13131, 4444}; + num[数组key值]; ```` 3. 匿名数组 @@ -74,36 +46,13 @@ ## 2. 深入String -### 2.1 字符串特点和比较 - -- String 字符串创建后不可修改,但可共享【在字符串池中共享】 -- 字符串效果上相当于字符数组(char[]),底层是字节数组( byte[] ) -- ==比较的是堆内存中的地址 - -- equals比较的是,字符串内容是否一样 +### 2.1 ==和equals -### 2.2 String的构造方法和成员方法 +> ==比较的是堆内存中的地址 +> +> equals比较的是常量池中,字符串内容是否一样 -- 构造方法 - - 1. public String() 【不论字符是否相同,JVM都会重新创建】 - - 2. public String(char[] chs) 根据字符数组内容,创建字符串对象【不论字符是否相同,JVM都会重新创建】 - - ````java - char[] chs = {'a','b','c'} - String s = new String(chs); - ```` - - 3. public Sring(Byte[] bys) 根据字节数组内容,创建字符串对象 【不论字符是否相同,JVM都会重新创建】 - - ````java - byte[] bys = {97, 98, 99}; - String s = new Sring(bys); - System.out.orintln(s); // abc - ```` - - 4. String s = "abc"; 直接复制创建对象 【如果字符相同,则JVM只会**创建一次**,并在字符串池中进行维护】 +### 2.2 String方法 #### 2.2.1 compareTo @@ -134,7 +83,7 @@ public static void main(String[] args) { 4. charAt - > `charAt(int index)` 返回指定索引处的 `char`值。 + > 获取指定索引的位置的字符 5. substring @@ -162,29 +111,23 @@ public static void main(String[] args) { 10. toUpperCase() -13. 遍历 - - ````java - String s = "终于肯向中国低头?华盛顿传出重大消息,美国将撤销对华两大禁令"; - for (int i=0; i < s.length(); i++ ){ - System.out.print(s.charAt(i)); - } - ```` - - - ### 2.3 buffer and builder - 和String类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。 - StringBuilder类也代表可变字符串对象。实际上,StringBuilder和StringBuffer基本相似,两个类的构造器和方法也基本相同。不同的是:**StringBuffer是线程安全的**,而StringBuilder则没有实现线程安全功能,所以性能略高。 - ![string是不可改变的](./images/17cf6c28ad820bab7121da244c3eaf3.png) - ![stringBuffer是可改变的](./images/4300ef8b8ec3f655e0428df15db1260.png) - #### 2.3.1 StringBuffer 1. 线程安全 -2. 举例 +2. 构造方法: + + ````java + + ```` + +3. 举例 ````java /** @@ -216,7 +159,6 @@ public static void main(String[] args) { #### 2.3.2 StringBuilder - - 可更改字符串,线程不安全 - 构造方法 @@ -229,7 +171,8 @@ public static void main(String[] args) { ```` - 方法 - 1. reverse + 1. reverse + 2. append ## 3. 集合 @@ -393,6 +336,7 @@ public static void main(String[] args) { - ## 4. I/O操作 + #### 4.1 创建目录 1. public boolean mkdir(); @@ -528,14 +472,38 @@ public static void writetest(){ } ```` - + + + +## 6. 网络编程 + +### 6.1 网络编程入门 + +#### 1. InetAddress + +- + +### 6.2 UDP通讯程序 + +### 6.3 TCP通讯程序 + + ## 其他 -### 1 线程安全 +#### 1 线程安全 > 线程安全就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用。不会出现数据不一致或者数据污染。线程不安全就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的数据是脏数据 问: 什么情况下多线程 + + + +#### 2. 位 字节 字符 + +- 位:数据存储的最小单位 +- 字节: 8位 +- 字符: utf-8 3字节 gbk 2字节 + -- Gitee