diff --git a/java_note/Java.md b/java_note/Java.md index 257ac098ef007fd9c2c071702c479df37927f844..d342a77d057b49dcdc5b9888968fd3549575ad91 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) @@ -56,8 +30,6 @@ num = new int[3]; num[数组key值]; - - int data[] = {1, 2, 4, 545, 11, 32, 13131, 4444}; ```` 3. 匿名数组 @@ -74,36 +46,13 @@ ## 2. 深入String -### 2.1 字符串特点和比较 - -- String 字符串创建后不可修改,但可共享【在字符串池中共享】 -- 字符串效果上相当于字符数组(char[]),底层是字节数组( byte[] ) -- ==比较的是堆内存中的地址 - -- equals比较的是,字符串内容是否一样 - -### 2.2 String的构造方法和成员方法 - -- 构造方法 - - 1. public String() 【不论字符是否相同,JVM都会重新创建】 - - 2. public String(char[] chs) 根据字符数组内容,创建字符串对象【不论字符是否相同,JVM都会重新创建】 - - ````java - char[] chs = {'a','b','c'} - String s = new String(chs); - ```` +### 2.1 ==和equals - 3. public Sring(Byte[] bys) 根据字节数组内容,创建字符串对象 【不论字符是否相同,JVM都会重新创建】 +> ==比较的是堆内存中的地址 +> +> equals比较的是常量池中,字符串内容是否一样 - ````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,26 +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 /** @@ -213,8 +159,21 @@ public static void main(String[] args) { #### 2.3.2 StringBuilder - 1. 线程不安全 - 2. +- 可更改字符串,线程不安全 + +- 构造方法 + + ````java + //初始化空白字符 + StringBuilder sb = new StringBuilder(); + //初始化特定字符 + StringBuilder sb1 = new StringBuilder("hello"); + ```` + +- 方法 + 1. reverse + + 2. append ## 3. 集合 @@ -380,6 +339,17 @@ public static void main(String[] args) { #### 4.1 创建目录 +1. public boolean mkdir(); +2. public boolean mkdirs(); 创建父目录和子目录 +3. File.separator 路径分隔符 +4. createNewFile() 创建文件 +5. exists(); +6. canRead() canWrite() isHidden() +7. public String[] list() 得到数组 +8. public File[] listFiles() 得到文件对象 +9. isDirextory() +10. delete() + ````java public static void mkdirtest(){ File mydir = new File("./src/main/java/com/ssmtest/mkdirtest"); @@ -469,7 +439,13 @@ public static void writetest(){ ````java ```` +#### 4.7 流式I/O +- 字节流相关的类分别集成 抽象类 InputStream OutStream +- 字节数组输入/输出流 ByteArrayInputStream ByteArrayOutStream +- 文件输入/输出流 FileInputStream FileOutStream +- 过滤流 FilterInputStream() FilterOutStream() +- diff --git a/java_note/images/17cf6c28ad820bab7121da244c3eaf3.png b/java_note/images/17cf6c28ad820bab7121da244c3eaf3.png new file mode 100644 index 0000000000000000000000000000000000000000..32869894be875fd8284887fff7d561f27b491b85 Binary files /dev/null and b/java_note/images/17cf6c28ad820bab7121da244c3eaf3.png differ diff --git a/java_note/images/4300ef8b8ec3f655e0428df15db1260.png b/java_note/images/4300ef8b8ec3f655e0428df15db1260.png new file mode 100644 index 0000000000000000000000000000000000000000..ccbbaa04462f574f5b13bd458672c265a73ae6ec Binary files /dev/null and b/java_note/images/4300ef8b8ec3f655e0428df15db1260.png differ