From e98cf1d508a58bf9d5b3ff53278cf0c5c957b87d Mon Sep 17 00:00:00 2001 From: zyc Date: Wed, 2 Mar 2022 21:09:44 +0800 Subject: [PATCH 1/9] zyc up 20220302 --- Java.md | 20 ++++++++++++++++++++ README.md | 24 ++++++++++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/Java.md b/Java.md index cbd5bdf..77f6546 100644 --- a/Java.md +++ b/Java.md @@ -160,6 +160,8 @@ Java 语言提供了八种基本类型。六种数字类型(四个整数型, 引用数据类型:类,接口,数组都是引用数据类型,又叫包装类 +包装类数据,如Integer, String, Double等将相应的基本数据类型包装起来的类。这些类数据全部存在于堆中,Java用new()语句来显示地告诉编译器,在运行时才根据需要动态创建,因此比较灵活,但缺点是要占用更多的时间。 + 包装类的作用: * 包装类作为类首先拥有了 Object 类的方法 @@ -324,6 +326,24 @@ new Integer(123) 与 Integer.valueOf(123) 的区别在于: valueOf() 方法的实现比较简单,就是先判断值是否在缓存池中,如果在的话就直接返回缓存池的内容。编译器会在自动装箱过程调用 valueOf() 方法,因此多个值相同且值在缓存池范围内的 Integer 实例使用自动装箱来创建,那么就会引用相同的对象。 + + +Integer 提供缓存机制,能够缓存-128,127之间的int类型,在装箱的时候避免多次创建对象, + +```java +Integer z = Integer.valueOf(123); +Integer k = Integer.valueOf(123); +System.out.println(z == k); // true +// 123 < 127 < 150 +Integer z = Integer.valueOf(150); +Integer k = Integer.valueOf(150); +System.out.println(z == k); // false +``` + + + + + **基本类型对应的缓存池如下:** - Boolean values true and false diff --git a/README.md b/README.md index 211ff15..859322e 100644 --- a/README.md +++ b/README.md @@ -18,3 +18,27 @@ * 所有的知识不保证权威性,如果各位朋友发现错误,欢迎与我讨论。 * 笔记的编写基于 Windows 平台,可能会因为平台的不同而造成空格、制表符的显示效果不同。 + +SE: Java Standard Edition,Java 标准版 +JVM: Java Virtual Machine(*Java*虚拟机) +ALG: Algorithm简单算法 +SDP: 设计模式 + + + +JUC: java.util.concurrent (简称 *JUC* )包,在此包中增加了在并发编程中很常用 的实用工具类, +NET: 网络编程 + + + +MyBatis: +Spring +MVC +SSM +Boot + + + +MySQL +JDBC +Redis From 4335b93622c4f2d738119c7d82111cc16eec97f4 Mon Sep 17 00:00:00 2001 From: zyc Date: Thu, 3 Mar 2022 23:05:04 +0800 Subject: [PATCH 2/9] =?UTF-8?q?=E7=BD=97=E5=88=97=E5=9F=BA=E7=A1=80?= =?UTF-8?q?=E5=AD=A6=E4=B9=A0=E5=86=85=E5=AE=B9=EF=BC=88=E9=BB=91=E9=A9=AC?= =?UTF-8?q?=E8=AF=BE=E7=A8=8B=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../img/image-20220225104708732.png" | Bin 0 -> 29261 bytes .../\345\237\272\347\241\200.md" | 121 ++++++++++++++++++ 2 files changed, 121 insertions(+) create mode 100644 "zyc/\351\273\221\351\251\254/img/image-20220225104708732.png" create mode 100644 "zyc/\351\273\221\351\251\254/\345\237\272\347\241\200.md" diff --git "a/zyc/\351\273\221\351\251\254/img/image-20220225104708732.png" "b/zyc/\351\273\221\351\251\254/img/image-20220225104708732.png" new file mode 100644 index 0000000000000000000000000000000000000000..f82c041905af3e12a8016bd26c51affad8cc0993 GIT binary patch literal 29261 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 literal 0 HcmV?d00001 diff --git "a/zyc/\351\273\221\351\251\254/\345\237\272\347\241\200.md" "b/zyc/\351\273\221\351\251\254/\345\237\272\347\241\200.md" new file mode 100644 index 0000000..f12d916 --- /dev/null +++ "b/zyc/\351\273\221\351\251\254/\345\237\272\347\241\200.md" @@ -0,0 +1,121 @@ +# 辅助键 + +![image-20220225104708732](img/image-20220225104708732.png) + +1.psvm+回车 可以打出 +2.sout+回车 可以打出 +3.fori+回车 可以打出 +4.Ctrl+Alt+V补全代码 +5.alt + insert get set +6.Ctrl+Alt+L 整理格式 + +# 目录 + +## 基础1(52) + +注释 + +关键字 + +常量 + +基本数据类型 + +变量 + +标识符(起名) + +类型转换 + +运算符 + +顺序结构 + +if else结构 + +swich结构 + +循环结构 + +Random + +## 基础2(148) + +IDEA + +数组 + +方法 + +重载 + +Debug + +类和对象 + +private + +this + +封装(标准类) + +构造方法 + +API + +String(不可变,换地址) + +StringBuilder(可变,不换地址) + +ArrayList集合(python列表) + +学生管理系统 + +## 基础3(168) + +继承 + +super + +重写 + +package + +import + +权限修饰符 + +final + +static + +## 基础4(219) + +多态 + +抽象类 + +接口 + +内部类 + +Math + +System + +Object + +冒泡排序 + +引用数据类型 + +Arrays + +Integer + +Date + +Calendar + +异常 + From abd8bcef78b39d61707987153fd4cfdba43b7eba Mon Sep 17 00:00:00 2001 From: zyc Date: Fri, 4 Mar 2022 16:55:08 +0800 Subject: [PATCH 3/9] zyc up 20220304 --- Java.md | 48 ++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 46 insertions(+), 2 deletions(-) diff --git a/Java.md b/Java.md index 77f6546..e199841 100644 --- a/Java.md +++ b/Java.md @@ -838,7 +838,16 @@ public class MethodDemo { 除了同一个类中的方法,重载也可以作用于这个类所继承而来的方法。如果子类定义了与父类中**非私有方法**同名的方法,而且这两个方法的参数类型不同,那么在子类中,这两个方法同样构成了重载 * 如果这两个方法都是静态的,那么子类中的方法隐藏了父类中的方法 -* 如果这两个方法都不是静态的,且都不是私有的,那么子类的方法重写了父类中的方法,也就是**多态** +* 如果这两个方法都不是静态的,且都不是私有的,且参数相同,那么子类的方法重写了父类中的方法,也就是**多态** + + + +| 比较项目 | 重载 | 覆写/重写 | +| -------- | ------------------------------------------------ | -------------------------------------------------------- | +| 英文名 | Overload | Override | +| 函数签名 | 只要求函数的参数个数或类型不一致,对返回值没要求 | 函数的参数个数、类型、返回值都必须完全一样。 | +| 发生地方 | 同一个类或者具有继承关系的两个类中 | 只能发生在继承关系的两个类中 | +| 访问权限 | 没有限制 | 子类覆写方法的访问权限必须大于或等于父类的方法的访问权限 | @@ -1267,7 +1276,7 @@ Java 是通过成员变量是否有 static 修饰来区分是类的还是属于 子类不能继承父类的东西: -* 子类不能继承父类的构造器,子类有自己的构造器 +* 子类不能继承父类的构造器,子类有自己的构造器(父类一般要有一个无参数的构造方法是因为我们的子类如果没有显性的调用父类的[构造函数](https://links.jianshu.com/go?to=https%3A%2F%2Fwww.baidu.com%2Fs%3Fwd%3D%E6%9E%84%E9%80%A0%E5%87%BD%E6%95%B0%26tn%3DSE_PcZhidaonwhc_ngpagmjz%26rsv_dl%3Dgh_pc_zhidao)的话就会默认加入super();即调用父类的无参数构造函数,当父类没有无参数构造函数就会报错哦,这就是要加入一个无参数构造函数的原因。) * 子类是不能可以继承父类的私有成员的,可以反射暴力去访问继承自父类的私有成员 * 子类是不能继承父类的静态成员的,子类只是可以访问父类的静态成员,父类静态成员只有一份可以被子类共享访问,**共享并非继承** @@ -2183,6 +2192,41 @@ protected 用于修饰成员,表示在继承体系中成员对于子类可见 +同时子类对父类的方法覆写对权限有要求,子类方法的访问权限必须大于或等于父类方法的访问权限。也就是说如果父类方法的访问权限是default,那么子类必须是default或者public,如果父类方法是public访问权限,那么子类就只能是public访问权限了。然而,实际开发中,绝大多数的方法都是public访问权限,所以覆写方法也是public。 + +关于访问权限,还有一点需要注意的是,父类方法如果是private,根据JAVA的封装性原则,private是不让其它任何类访问的。那么,此时子类能否对父类的private方法进行覆写呢? + +答案是否定的。 + +```Java +class A{ + public void test(){ + fun(); + } + + private void fun(){ + System.out.println("父类的private fun()"); + } +} + +class B extends A{ + public void fun(){ + System.out.println("子类的public fun()"); + } +} + +public class Hello{ + public static void main(String[] args) throws Exception{ + B b = new B(); + b.test(); // 此时运行结果是调用的父类的private fun()方法。 + b.fun(); + } +} +// 输出 +// 父类的private fun() +// 子类的public fun() +``` + *** From 15bdf7b32c83c41fc826f2cf392d43b05e6d3cad Mon Sep 17 00:00:00 2001 From: zyc Date: Sat, 5 Mar 2022 20:55:58 +0800 Subject: [PATCH 4/9] zyc up 20220305 --- ...72\347\241\200\350\257\255\346\263\225.md" | 393 ++++++++++++++++++ 1 file changed, 393 insertions(+) create mode 100644 "zyc/\345\237\272\347\241\200\350\257\255\346\263\225/\345\237\272\347\241\200\350\257\255\346\263\225.md" diff --git "a/zyc/\345\237\272\347\241\200\350\257\255\346\263\225/\345\237\272\347\241\200\350\257\255\346\263\225.md" "b/zyc/\345\237\272\347\241\200\350\257\255\346\263\225/\345\237\272\347\241\200\350\257\255\346\263\225.md" new file mode 100644 index 0000000..35121f7 --- /dev/null +++ "b/zyc/\345\237\272\347\241\200\350\257\255\346\263\225/\345\237\272\347\241\200\350\257\255\346\263\225.md" @@ -0,0 +1,393 @@ +# 基础 + +## 输出sout + +``` +system.out.println("HelloWorld"); +``` + +## 三元运算符 + +``` +boolean b = weight1 == weight2 ? true : false; +int tempHeight = height1 > height2 ? height1 : height2; +int max = a > b ? a : b; +``` + +## 输入 + +``` +import java.util.Scanner; + +Scanner sc = new Scanner(System.in); + +//读一个整数: +int n = sc.nextInt(); + +//读一个字符串: +String s = sc.next(); + +//读一个浮点数: +double t = sc.nextDouble(); + +//读一整行: +String s = sc.nextLine(); + +//判断是否有下一个输入可以用 +//sc.hasNext() 或 sc.hasNextInt() 或 sc.hasNextDouble() + +``` + +## if + +``` +if(week == 1) { + System.out.println("星期一"); + } else if(week == 2) { + System.out.println("星期二"); + } else if(week == 3) { + System.out.println("星期三"); + } else if(week == 4) { + System.out.println("星期四"); + } else if(week == 5) { + System.out.println("星期五"); + } else if(week == 6) { + System.out.println("星期六"); + } else { + System.out.println("星期日"); + } +``` + +1 + +``` +if(score>100 || score<0) { + System.out.println("你输入的分数有误"); + } else if(score>=95 && score<=100) { + System.out.println("山地自行车一辆"); + } else if(score>=90 && score<=94) { + System.out.println("游乐场玩一次"); + } else if(score>=80 && score<=89) { + System.out.println("变形金刚玩具一个"); + } else { + System.out.println("胖揍一顿"); + } +``` + +## switch + +``` +switch(week) { + case 1: + System.out.println("星期一"); + break; + case 2: + System.out.println("星期二"); + break; + case 3: + System.out.println("星期三"); + break; + case 4: + System.out.println("星期四"); + break; + case 5: + System.out.println("星期五"); + break; + case 6: + System.out.println("星期六"); + break; + case 7: + System.out.println("星期日"); + break; + default: + System.out.println("你输入的星期数有误"); + break; + } +``` + +1 + +``` +switch(month) { + case 1: + case 2: + case 12: + System.out.println("冬季"); + break; + case 3: + case 4: + case 5: + System.out.println("春季"); + break; + case 6: + case 7: + case 8: + System.out.println("夏季"); + break; + case 9: + case 10: + case 11: + System.out.println("秋季"); + break; + default: + System.out.println("你输入的月份有误"); + } +``` + +## 循环 + +``` +int j = 1; +do { + System.out.println("HelloWorld"); + j++; +}while(j<=5); +``` + +1 + +``` +//输出所有的水仙花数必然要使用到循环,遍历所有的三位数,三位数从100开始,到999结束 + for(int i=100; i<1000; i++) { + //在计算之前获取三位数中每个位上的值 + int ge = i%10; + int shi = i/10%10; + int bai = i/10/10%10; + + //在判定水仙花数的过程中,满足条件不再输出,更改为修改count的值,使count+1 + if(ge*ge*ge + shi*shi*shi + bai*bai*bai == i) { + count++; + } + } +``` + + + +``` +int j = 1; + while(j<=5) { + System.out.println("HelloWorld"); + j++; + } +``` + +1 + +``` +for(int hour=0; hour<24; hour++) { + for(int minute=0; minute<60; minute++) { + System.out.println(hour + "时" + minute + "分"); + } + System.out.println("--------"); + } +``` + +1 + +``` + for(int i = 1; i<=5; i++) { + if(i%2 == 0) { + //continue; + break; + } +``` + +## Random + +``` +Random r = new Random(); + + //用循环获取10个随机数 + for(int i=0; i<10; i++) { + //获取随机数 + int number = r.nextInt(10); + System.out.println("number:" + number); + } +``` + +1 + +## 数组 + +``` + int[] arr = new int[3]; + /* + 左边: + int:说明数组中的元素类型是int类型 + []:说明这是一个数组 + arr:这是数组的名称 + 右边: + new:为数组申请内存空间 + int:说明数组中的元素类型是int类型 + []:说明这是一个数组 + 3:数组长度,其实就是数组中的元素个数 + */ + + //输出数组名 + System.out.println(arr); //[I@880ec60 + + //输出数组中的元素 + System.out.println(arr[0]); + System.out.println(arr[1]); + System.out.println(arr[2]); +``` + + + +``` + int[] arr = new int[2]; + int[] arr2 = new int[3]; + + //分别输出数组名及元素 + System.out.println(arr); + System.out.println(arr[0]); + System.out.println(arr[1]); + + System.out.println(arr2); + System.out.println(arr2[0]); + System.out.println(arr2[2]); + + //然后分别给数组中的元素赋值 + arr[1] = 100; + arr2[0] = 200; + arr2[2] = 300; + + //分别再次输出数组名及元素 + System.out.println(arr); + System.out.println(arr[0]); + System.out.println(arr[1]); + + System.out.println(arr2); + System.out.println(arr2[0]); + System.out.println(arr2[2]); +``` + +1 + +``` +[I@58ceff1 +0 +0 +[I@7c30a502 +0 +0 +[I@58ceff1 +0 +100 +[I@7c30a502 +200 +300 +``` + +1 + +``` + +``` + +1 + +``` + +``` + +1 + + + +``` + +``` + +1 + +``` + +``` + +1 + + + +``` + +``` + +1 + +``` + +``` + +1 + + + +``` + +``` + +1 + +``` + +``` + +1 + + + +``` + +``` + +1 + +``` + +``` + +1 + + + +``` + +``` + +1 + +``` + +``` + +1 + + + +``` + +``` + +1 + +``` + +``` + +1 + + + +``` + +``` + +1 + +``` + +``` + +1 + From 21818aaabbac5d5980d354282fa8d2bf0fa9085c Mon Sep 17 00:00:00 2001 From: zyc Date: Sun, 6 Mar 2022 21:29:40 +0800 Subject: [PATCH 5/9] zyc 20220306 --- Java.md | 2 +- ...72\347\241\200\350\257\255\346\263\225.md" | 829 ++++++++++++++---- 2 files changed, 662 insertions(+), 169 deletions(-) diff --git a/Java.md b/Java.md index af83e42..bfd6fdb 100644 --- a/Java.md +++ b/Java.md @@ -1951,7 +1951,7 @@ class Animal{ } ``` - +你家有只猫和狗,你喂他们时,都可以用同一种方法来喂养(因为他们都是宠物),但是你却不能用这种方式让他们做动作,比如狗会摇尾巴,猫却不会。 *** diff --git "a/zyc/\345\237\272\347\241\200\350\257\255\346\263\225/\345\237\272\347\241\200\350\257\255\346\263\225.md" "b/zyc/\345\237\272\347\241\200\350\257\255\346\263\225/\345\237\272\347\241\200\350\257\255\346\263\225.md" index 35121f7..0454869 100644 --- "a/zyc/\345\237\272\347\241\200\350\257\255\346\263\225/\345\237\272\347\241\200\350\257\255\346\263\225.md" +++ "b/zyc/\345\237\272\347\241\200\350\257\255\346\263\225/\345\237\272\347\241\200\350\257\255\346\263\225.md" @@ -1,14 +1,68 @@ +# 快捷键 + +1.psvm+回车 可以打出 +2.sout+回车 可以打出 +3.fori+回车 可以打出 +4.Ctrl+Alt+V补全代码 +5.alt + insert get set +6.Ctrl+Alt+L 整理格式 + + + # 基础 -## 输出sout +## 变量 + +```java +byte b = 10; +System.out.println(b); + +//定义short类型的变量 +short s = 100; +System.out.println(s); +//定义int类型的变量 +int i = 10000; +System.out.println(i); + +//定义double类型的变量 +double d = 13.14; +System.out.println(d); + +//定义char类型的变量 +char c = 'a'; +System.out.println(c); + +//定义boolean类型的变量 +//boolean b = true; +//System.out.println(b); +boolean bb = true; +System.out.println(bb); +System.out.println("--------"); + +//定义long类型的变量 +long l = 10000000000L; +System.out.println(l); +System.out.println("--------"); + +//定义float类型的变量 +float f = 13.14F; +System.out.println(f); ``` + + + + + +## 输出sout + +```java system.out.println("HelloWorld"); ``` ## 三元运算符 -``` +```java boolean b = weight1 == weight2 ? true : false; int tempHeight = height1 > height2 ? height1 : height2; int max = a > b ? a : b; @@ -16,7 +70,7 @@ int max = a > b ? a : b; ## 输入 -``` +```java import java.util.Scanner; Scanner sc = new Scanner(System.in); @@ -40,103 +94,103 @@ String s = sc.nextLine(); ## if -``` +```java if(week == 1) { - System.out.println("星期一"); - } else if(week == 2) { - System.out.println("星期二"); - } else if(week == 3) { - System.out.println("星期三"); - } else if(week == 4) { - System.out.println("星期四"); - } else if(week == 5) { - System.out.println("星期五"); - } else if(week == 6) { - System.out.println("星期六"); - } else { - System.out.println("星期日"); - } + System.out.println("星期一"); +} else if(week == 2) { + System.out.println("星期二"); +} else if(week == 3) { + System.out.println("星期三"); +} else if(week == 4) { + System.out.println("星期四"); +} else if(week == 5) { + System.out.println("星期五"); +} else if(week == 6) { + System.out.println("星期六"); +} else { + System.out.println("星期日"); +} ``` 1 -``` +```java if(score>100 || score<0) { - System.out.println("你输入的分数有误"); - } else if(score>=95 && score<=100) { - System.out.println("山地自行车一辆"); - } else if(score>=90 && score<=94) { - System.out.println("游乐场玩一次"); - } else if(score>=80 && score<=89) { - System.out.println("变形金刚玩具一个"); - } else { - System.out.println("胖揍一顿"); - } + System.out.println("你输入的分数有误"); +} else if(score>=95 && score<=100) { + System.out.println("山地自行车一辆"); +} else if(score>=90 && score<=94) { + System.out.println("游乐场玩一次"); +} else if(score>=80 && score<=89) { + System.out.println("变形金刚玩具一个"); +} else { + System.out.println("胖揍一顿"); +} ``` ## switch -``` +```java switch(week) { - case 1: - System.out.println("星期一"); - break; - case 2: - System.out.println("星期二"); - break; - case 3: - System.out.println("星期三"); - break; - case 4: - System.out.println("星期四"); - break; - case 5: - System.out.println("星期五"); - break; - case 6: - System.out.println("星期六"); - break; - case 7: - System.out.println("星期日"); - break; - default: - System.out.println("你输入的星期数有误"); - break; - } + case 1: + System.out.println("星期一"); + break; + case 2: + System.out.println("星期二"); + break; + case 3: + System.out.println("星期三"); + break; + case 4: + System.out.println("星期四"); + break; + case 5: + System.out.println("星期五"); + break; + case 6: + System.out.println("星期六"); + break; + case 7: + System.out.println("星期日"); + break; + default: + System.out.println("你输入的星期数有误"); + break; +} ``` 1 -``` +```java switch(month) { - case 1: - case 2: - case 12: - System.out.println("冬季"); - break; - case 3: - case 4: - case 5: - System.out.println("春季"); - break; - case 6: - case 7: - case 8: - System.out.println("夏季"); - break; - case 9: - case 10: - case 11: - System.out.println("秋季"); - break; - default: - System.out.println("你输入的月份有误"); - } + case 1: + case 2: + case 12: + System.out.println("冬季"); + break; + case 3: + case 4: + case 5: + System.out.println("春季"); + break; + case 6: + case 7: + case 8: + System.out.println("夏季"); + break; + case 9: + case 10: + case 11: + System.out.println("秋季"); + break; + default: + System.out.println("你输入的月份有误"); +} ``` ## 循环 -``` +```java int j = 1; do { System.out.println("HelloWorld"); @@ -146,125 +200,123 @@ do { 1 -``` +```java //输出所有的水仙花数必然要使用到循环,遍历所有的三位数,三位数从100开始,到999结束 - for(int i=100; i<1000; i++) { - //在计算之前获取三位数中每个位上的值 - int ge = i%10; - int shi = i/10%10; - int bai = i/10/10%10; - - //在判定水仙花数的过程中,满足条件不再输出,更改为修改count的值,使count+1 - if(ge*ge*ge + shi*shi*shi + bai*bai*bai == i) { - count++; - } - } +for(int i=100; i<1000; i++) { + //在计算之前获取三位数中每个位上的值 + int ge = i%10; + int shi = i/10%10; + int bai = i/10/10%10; + + //在判定水仙花数的过程中,满足条件不再输出,更改为修改count的值,使count+1 + if(ge*ge*ge + shi*shi*shi + bai*bai*bai == i) { + count++; + } +} ``` -``` +```java int j = 1; - while(j<=5) { - System.out.println("HelloWorld"); - j++; - } +while(j<=5) { + System.out.println("HelloWorld"); + j++; +} ``` 1 -``` +```java for(int hour=0; hour<24; hour++) { - for(int minute=0; minute<60; minute++) { - System.out.println(hour + "时" + minute + "分"); - } - System.out.println("--------"); - } + for(int minute=0; minute<60; minute++) { + System.out.println(hour + "时" + minute + "分"); + } + System.out.println("--------"); +} ``` 1 -``` - for(int i = 1; i<=5; i++) { - if(i%2 == 0) { - //continue; - break; - } +```java +for(int i = 1; i<=5; i++) { + if(i%2 == 0) { + //continue; + break; + } ``` ## Random -``` +```java Random r = new Random(); - - //用循环获取10个随机数 - for(int i=0; i<10; i++) { - //获取随机数 - int number = r.nextInt(10); - System.out.println("number:" + number); - } + +//用循环获取10个随机数 +for(int i=0; i<10; i++) { + //获取随机数 + int number = r.nextInt(10); + System.out.println("number:" + number); +} ``` 1 -## 数组 +## 数组array -``` - int[] arr = new int[3]; - /* - 左边: - int:说明数组中的元素类型是int类型 - []:说明这是一个数组 - arr:这是数组的名称 - 右边: - new:为数组申请内存空间 - int:说明数组中的元素类型是int类型 - []:说明这是一个数组 - 3:数组长度,其实就是数组中的元素个数 - */ +```java +int[] arr = new int[3]; +int[] arr = {11, 22, 33, 44, 55}; +/* +左边: +int:说明数组中的元素类型是int类型 +[]:说明这是一个数组 +arr:这是数组的名称 +右边: +new:为数组申请内存空间 +int:说明数组中的元素类型是int类型 +[]:说明这是一个数组 +3:数组长度,其实就是数组中的元素个数 +*/ - //输出数组名 - System.out.println(arr); //[I@880ec60 +//输出数组名 +System.out.println(arr); //[I@880ec60 - //输出数组中的元素 - System.out.println(arr[0]); - System.out.println(arr[1]); - System.out.println(arr[2]); +//输出数组中的元素 +System.out.println(arr[0]); +System.out.println(arr[1]); +System.out.println(arr[2]); ``` -``` - int[] arr = new int[2]; - int[] arr2 = new int[3]; - - //分别输出数组名及元素 - System.out.println(arr); - System.out.println(arr[0]); - System.out.println(arr[1]); +```java +int[] arr = new int[2]; +int[] arr2 = new int[3]; - System.out.println(arr2); - System.out.println(arr2[0]); - System.out.println(arr2[2]); +//分别输出数组名及元素 +System.out.println(arr); +System.out.println(arr[0]); +System.out.println(arr[1]); - //然后分别给数组中的元素赋值 - arr[1] = 100; - arr2[0] = 200; - arr2[2] = 300; +System.out.println(arr2); +System.out.println(arr2[0]); +System.out.println(arr2[2]); - //分别再次输出数组名及元素 - System.out.println(arr); - System.out.println(arr[0]); - System.out.println(arr[1]); +//然后分别给数组中的元素赋值 +arr[1] = 100; +arr2[0] = 200; +arr2[2] = 300; - System.out.println(arr2); - System.out.println(arr2[0]); - System.out.println(arr2[2]); -``` +//分别再次输出数组名及元素 +System.out.println(arr); +System.out.println(arr[0]); +System.out.println(arr[1]); -1 +System.out.println(arr2); +System.out.println(arr2[0]); +System.out.println(arr2[2]); -``` +输出 [I@58ceff1 0 0 @@ -279,115 +331,556 @@ Random r = new Random(); 300 ``` -1 + +## 标准类 + +快捷键Alt+Ins + +```java +public class Student { + //成员变量 + private String name; + private int age; + + //构造方法 + public Student() { + } + + public Student(String name, int age) { + this.name = name; + this.age = age; + } + + //成员方法 + public void setName(String name) { + this.name = name; + } + + public String getName() { + return name; + } + + public void setAge(int age) { + this.age = age; + } + + public int getAge() { + return age; + } + + public void show() { + System.out.println(name + "," + age); + } +} ``` +## 字符串String + +### 初始化 + +构造方法的方式得到对象 + +```java +//构造方法的方式得到对象 +char[] chs = {'a', 'b', 'c'}; +String s1 = new String(chs); ``` -1 +直接赋值的方式得到对象 +```java +//直接赋值的方式得到对象 +String s3 = "abc"; +String s4 = "abc"; ``` +源码 + +```java +public String(char value[]) { + this(value, 0, value.length, null); +} + +String(char[] value, int off, int len, Void sig) { + if (len == 0) { + this.value = "".value; + this.coder = "".coder; + return; + } + if (COMPACT_STRINGS) { + byte[] val = StringUTF16.compress(value, off, len); + if (val != null) { + this.value = val; + this.coder = LATIN1; + return; + } + } + this.coder = UTF16; + this.value = StringUTF16.toBytes(value, off, len); +} ``` -1 +### 赋值 +键盘录入一个字符串,用 Scanner 实现 +```java +//创建对象 +Scanner sc = new Scanner(System.in); +//接收数据 +System.out.println("请输入一个字符串数据:"); +//String line = sc.nextLine(); +//Ctrl+Alt+V 赋值快捷键 +String line = sc.nextLine(); ``` +### 比较 + +比较字符串内容是否相同.equals() + +```java +//比较字符串内容是否相同 +System.out.println(s1.equals(s2)); +System.out.println(s1.equals(s3)); +System.out.println(s3.equals(s4)); ``` -1 +### 方法 + +#### 长度.length() + +```java +int len = site.length(); +``` + +#### 连接字符串 +```java +// 第一种 string1.concat(string2); +"我的名字是 ".concat("Runoob"); +// 第二种 “+” +String string1 = "菜鸟教程网址:"; +System.out.println("1、" + string1 + "www.runoob.com"); +// 1、菜鸟教程网址:www.runoob.com ``` +#### 格式化字符串 + +```java +String fs; +fs = String.format("浮点型变量的值为 " + + "%f, 整型变量的值为 " + + " %d, 字符串变量的值为 " + + " %s", floatVar, intVar, stringVar); ``` -1 +#### 返回指定索引处的 char 值。charAt() 截取一个字符 + +```java +char charAt(int index) +``` + +#### replace() 替换 +```java +//它有两种形式,第一种形式用一个字符在调用字符串中所有出现某个字符的地方进行替换,形式如下: +String replace(char original,char replacement) + +//例如: +String s="Hello".replace('l','w'); + +//第二种形式是用一个字符序列替换另一个字符序列,形式如下: + +String replace(CharSequence original,CharSequence replacement) ``` +#### getChars() 截取多个字符 + +void getChars(int sourceStart,int sourceEnd,char target[],int targetStart) + +sourceStart指定了子串开始字符的下标,sourceEnd指定了子串结束后的下一个字符的下标。因此, 子串包含从sourceStart到sourceEnd-1的字符。接收字符的数组由target指定,target中开始复制子串的下标值是targetStart。 + +```java +String s="this is a demo of the getChars method."; + +char buf[]=new char[20]; + +s.getChars(10,14,buf,0); ``` -1 + +#### trim() 去掉起始和结尾的空格 + +#### valueOf() 转换为字符串 + +#### toLowerCase() 转换为小写 + +#### toUpperCase() 转换为大写 + +#### indexOf()和lastIndexOf() + +indexOf() 查找字符或者子串第一次出现的地方。 + +lastIndexOf() 查找字符或者子串是后一次出现的地方。 + +#### toCharArray() 方法将字符串转换为字符数组。 + +```java +String Str = new String("www.runoob.com"); +//System.out.println(Str[0]); 出错 + +System.out.print("返回值 :" ); +System.out.println( Str.toCharArray()[0] ); +//输出w +``` + + + + + +## 字符串StringBuilder(可改) + +```java +/* +StringBuilder构造方法: +public StringBuilder():创建一个空白可变字符串对象,不含有任何内容 +public StringBuilder(String str):根据字符串的内容,来创建可变字符串对象 + */ +//public StringBuilder():创建一个空白可变字符串对象,不含有任何内容 +StringBuilder sb = new StringBuilder(); +System.out.println("sb:" + sb); +System.out.println("sb.length():" + sb.length()); + +//public StringBuilder(String str):根据字符串的内容,来创建可变字符串对象 +StringBuilder sb2 = new StringBuilder("hello"); +System.out.println("sb2:" + sb2); +System.out.println("sb2.length():" + sb2.length()); + +``` + +### 方法 + +#### .append() + +```java +sb.append("hello").append("world").append("java"); + +``` + +#### String转换.toString() + +```java +StringBuilder sb = new StringBuilder(); +sb.append("hello"); +//public String toString():通过 toString() 就可以实现把 StringBuilder 转换为 String +String s = sb.toString(); +System.out.println(s); +``` + +```java +//StringBuilder sb = s; //这个是错误的做法 + +//public StringBuilder(String s):通过构造方法就可以实现把 String 转换为 StringBuilder +StringBuilder sb = new StringBuilder(s); + +``` + +#### .reverse()反转 + + + +#### delete(int start, int end)移除 + +移除此序列的子字符串中的字符 + +```java +sb.delete(5,8); +//移除[5,8)索引的字符 +``` + +#### insert(int offset, String str)插入 + +将 `str` 参数的字符串插入此序列中。 + +```java +sb.insert(8, "Java"); +//插入到8索引开始的地方 +//Runoob..! +//Runoob..Java! +``` + +insert(int offset, int i) +将 `int` 参数的字符串表示形式插入此序列中。 + +#### replace(int start, int end, String str) + +使用给定 `String` 中的字符替换此序列的子字符串中的字符。 + +```java + +``` + +## 工具Arrays + +Array 的工具类 Arrays + +常用API: + +* `public static String toString(int[] a)`:返回指定数组的内容的字符串表示形式 +* `public static void sort(int[] a)`:按照数字顺序排列指定的数组 +* `public static int binarySearch(int[] a, int key)`:利用二分查找返回指定元素的索引 +* `public static List asList(T... a)`:返回由指定数组支持的列表 + +```java +public class MyArraysDemo { + public static void main(String[] args) { + //按照数字顺序排列指定的数组 + int [] arr = {3,2,4,6,7}; + Arrays.sort(arr); + System.out.println(Arrays.toString(arr)); + + int [] arr = {1,2,3,4,5,6,7,8,9,10}; + int index = Arrays.binarySearch(arr, 0); + System.out.println(index); + //1,数组必须有序 + //2.如果要查找的元素存在,那么返回的是这个元素实际的索引 + //3.如果要查找的元素不存在,那么返回的是 (-插入点-1) + //插入点:如果这个元素在数组中,他应该在哪个索引上. + } + } +``` + +## ArrayList + +可以添加对象 + +```java + ArrayList array = new ArrayList(); +``` + + + +### 增 + +```java +//创建集合 +ArrayList array = new ArrayList(); + +//添加元素 +array.add("hello"); +array.add("world"); +array.add("java"); +//public void add(int index,E element):在此集合中的指定位置插入指定的元素 +array.add(1,"javase"); +``` + +### 删 + +```java +//public boolean remove(Object o):删除指定的元素,返回删除是否成功 +System.out.println(array.remove("world")); // true +System.out.println(array.remove("javaee")); // false +``` + +```java +//public E remove(int index):删除指定索引处的元素,返回被删除的元素 +System.out.println(array.remove(1)); +``` + +### 改 + +```java +//public E set(int index,E element):修改指定索引处的元素,返回被修改的元素 +System.out.println(array.set(1,"javaee")); +``` + +### 查 + +```java +System.out.println(array.get(0)); +System.out.println(array.get(1)); +``` + +### size + +```java +//public int size():返回集合中的元素的个数 +System.out.println(array.size()); +``` + +### 输出 + +```java +//输出集合 +System.out.println("array:" + array); ``` +## @Override + + 修饰重写,检测是否成功 + +```java + ``` 1 +```java +``` + +1 + +```java ``` +1 + +```java + ``` 1 +```java + ``` +1 + +```java + ``` 1 +```java + +``` +1 + +```java ``` +1 + +```java + ``` 1 +```java + ``` +1 + +```java + ``` 1 +```java + +``` + +1 +```java ``` +1 + +```java + ``` 1 +```java + ``` +1 + +```java + ``` 1 +```java +``` + +1 + +```java ``` +1 + +```java + ``` 1 +```java + ``` +1 + +```java + ``` 1 +```java +``` + +1 + +```java ``` +1 + +```java + ``` 1 +```java + ``` +1 + +```java + ``` 1 +```java + +``` + From f33ea2639b66134b2149c32f6f430f328403747e Mon Sep 17 00:00:00 2001 From: zyc Date: Mon, 7 Mar 2022 23:03:16 +0800 Subject: [PATCH 6/9] zyc 20220307 --- Java.md | 2 +- ...72\347\241\200\350\257\255\346\263\225.md" | 14 ++++- .../\345\237\272\347\241\200.md" | 59 +++++++++++++++++-- 3 files changed, 69 insertions(+), 6 deletions(-) diff --git a/Java.md b/Java.md index bfd6fdb..af83e42 100644 --- a/Java.md +++ b/Java.md @@ -1951,7 +1951,7 @@ class Animal{ } ``` -你家有只猫和狗,你喂他们时,都可以用同一种方法来喂养(因为他们都是宠物),但是你却不能用这种方式让他们做动作,比如狗会摇尾巴,猫却不会。 + *** diff --git "a/zyc/\345\237\272\347\241\200\350\257\255\346\263\225/\345\237\272\347\241\200\350\257\255\346\263\225.md" "b/zyc/\345\237\272\347\241\200\350\257\255\346\263\225/\345\237\272\347\241\200\350\257\255\346\263\225.md" index 0454869..7ca5bce 100644 --- "a/zyc/\345\237\272\347\241\200\350\257\255\346\263\225/\345\237\272\347\241\200\350\257\255\346\263\225.md" +++ "b/zyc/\345\237\272\347\241\200\350\257\255\346\263\225/\345\237\272\347\241\200\350\257\255\346\263\225.md" @@ -728,7 +728,19 @@ System.out.println("array:" + array); ``` -1 +匿名内部类 + +Math + +System + +Object + +Arrays + +Integer + +引用数据类型 ```java diff --git "a/zyc/\351\273\221\351\251\254/\345\237\272\347\241\200.md" "b/zyc/\351\273\221\351\251\254/\345\237\272\347\241\200.md" index f12d916..1e03771 100644 --- "a/zyc/\351\273\221\351\251\254/\345\237\272\347\241\200.md" +++ "b/zyc/\351\273\221\351\251\254/\345\237\272\347\241\200.md" @@ -91,13 +91,64 @@ static ## 基础4(219) -多态 +### 多态 -抽象类 +你家有只猫和狗,你喂他们时,都可以用同一种方法来喂养(因为他们都是宠物),但是你却不能用这种方式让他们做动作,比如狗会摇尾巴,猫却不会。 -接口 +喂养这个动作就可以使用多态,也就是动物父类来调用猫狗都存在的方法,不管是否存在重写。 -内部类 +猫吃饭、狗吃饭、猫爬树、狗摇尾巴这四个动作,使用多态就可以简化为: + +动物吃饭(动物猫)、动物吃饭(动物狗)、猫爬树、狗摇尾巴 + +```java +AnimalEat(Animal c = new Cat()); +AnimalEat(Animal c = new Dog()); +Cat.climbTree(); +Dog.wagTail(); +``` + + + +### 抽象 + +抽象类为其他子类固定了一个框架,不能被实例化,更直观看到最基础的特征,可以理解成“目录”、“提纲”、“模板”。 + +抽象类会提出子类会什么什么,但子类怎么实现它不管。 + +### 接口 + +更彻底的抽象,里面默认抽象方法 + +Java是单继承,接口可以为其他的特征添加补丁,或者和形容词一样修饰类,并且一个类可以有很多形容词。主要的分类提取成父类,次要的提取成接口。 + +乒乓球运动员,乒乓球教练,篮球运动员,篮球教练 这四个对象,类可以是: + +乒乓球运动员:运动员(子类)——人(父类)+ 乒乓球的(接口) + + + +### 内部类 + + + +### 匿名内部类 + +为了不添加新类,临时重写出来一个对象来使用。 + +是一个对象,是子类重写后的对象,可以用多态赋值 + +```java +Animal a = new Animal(){ + @Override + public void run() { + System.out.println("猫跑的贼溜~~"); + //System.out.println(n); + } +}; +``` + +a这个匿名内部类就是Animal经过重写的子类对象,Animal那个位置也可以是接口。 Math From dff546cffeaf2daec81b09d7ffe9c1270a623711 Mon Sep 17 00:00:00 2001 From: zyc Date: Tue, 8 Mar 2022 22:43:55 +0800 Subject: [PATCH 7/9] zyc 20220308 --- ...72\347\241\200\350\257\255\346\263\225.md" | 480 +++++++++++++++++- .../\345\237\272\347\241\200.md" | 15 +- 2 files changed, 487 insertions(+), 8 deletions(-) diff --git "a/zyc/\345\237\272\347\241\200\350\257\255\346\263\225/\345\237\272\347\241\200\350\257\255\346\263\225.md" "b/zyc/\345\237\272\347\241\200\350\257\255\346\263\225/\345\237\272\347\241\200\350\257\255\346\263\225.md" index 7ca5bce..209f066 100644 --- "a/zyc/\345\237\272\347\241\200\350\257\255\346\263\225/\345\237\272\347\241\200\350\257\255\346\263\225.md" +++ "b/zyc/\345\237\272\347\241\200\350\257\255\346\263\225/\345\237\272\347\241\200\350\257\255\346\263\225.md" @@ -728,32 +728,498 @@ System.out.println("array:" + array); ``` -匿名内部类 +## 抽象 -Math +```java +public abstract class Animal { + private String name; + private int age; -System + public Animal() { + } -Object + public Animal(String name, int age) { + this.name = name; + this.age = age; + } -Arrays + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getAge() { + return age; + } + + public void setAge(int age) { + this.age = age; + } + + public abstract void eat(); +} +``` -Integer -引用数据类型 ```java +public class Cat extends Animal { + + public Cat() { + } + + public Cat(String name, int age) { + super(name, age); + } + + @Override + public void eat() { + System.out.println("猫吃鱼"); + } +} +``` +## 接口 + +```java +//说英语的接口 +public interface SpeakEnglish { + public abstract void speak(); +} +``` + +```java +public abstract class Person { + private String name; + private int age; + + public Person() { + } + + public Person(String name, int age) { + this.name = name; + this.age = age; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getAge() { + return age; + } + + public void setAge(int age) { + this.age = age; + } + + public abstract void eat(); +} + +``` + +```java +//抽象运动员类 +public abstract class Player extends Person { + public Player() { + } + + public Player(String name, int age) { + super(name, age); + } + + public abstract void study(); +} ``` 1 ```java +public class PingPangPlayer extends Player implements SpeakEnglish { + + public PingPangPlayer() { + } + + public PingPangPlayer(String name, int age) { + super(name, age); + } + + @Override + public void study() { + System.out.println("乒乓球运动员学习如何发球和接球"); + } + + @Override + public void eat() { + System.out.println("乒乓球运动员吃大白菜,喝小米粥"); + } + + @Override + public void speak() { + System.out.println("乒乓球运动员说英语"); + } +} ``` + + +## 匿名内部类 + +为了不添加新类,临时重写出来一个对象来使用。 + +是一个对象,是子类重写后的对象,可以用多态赋值 + +```java +Animal a = new Animal(){ + @Override + public void run() { + System.out.println("猫跑的贼溜~~"); + } +}; +``` + +a这个匿名内部类就是Animal经过重写的子类对象,Animal那个位置也可以是接口。 + + + +```java +/* + 跳高接口 + */ +public interface Jumpping { + + void jump(); + +} +``` + +```java +public class JumppingDemo { + public static void main(String[] args) { + //需求:创建接口操作类的对象,调用method方法 + JumppingOperator jo = new JumppingOperator(); + Jumpping j = new Cat(); + jo.method(j); + + Jumpping j2 = new Dog(); + jo.method(j2); + System.out.println("--------"); + + jo.method(new Jumpping() { + @Override + public void jump() { + System.out.println("猫可以跳高了"); + } + }); + + jo.method(new Jumpping() { + @Override + public void jump() { + System.out.println("狗可以跳高了"); + } + }); + + } +} +``` + +## Arrays + +```java +import java.util.Arrays +``` + +### Arrays.sort(nums); + +对数组按照升序排序 + +```java +int[] nums = {2,5,0,4,6,-10}; +Arrays.sort(nums); +for(int i :nums) + System.out.print(i+" "); +/* 之前:2 5 0 4 6 -10 +* 结果:-10 0 2 4 5 6 +*/ +``` + +反向排序, Reverse-order sort + + + +### .toString(Object[] array) + +功能:返回数组的字符串形式 + +### Arrays.fill(Object[] array,Object object) + +功能:可以为数组元素填充相同的值 + + + +## Math + +abs(int a):返回参数的绝对值 + +ceil(double a):返回大于或等于参数的最小double值,等于一个整数 + +floor(double a):返回小于或等于参数的最大double值,等于一个整数 + +round(float a):按照四舍五入返回最接近参数的int + +max(int a,int b):返回两个int值中的较大值 + +min(int a,int b):返回两个int值中的较小值(自学) + +public static double pow(double a,double b):返回a的b次幂的值 + +public static double random():返回值为double的正值,[0.0,1.0) + +```java +public class MathDemo { + public static void main(String[] args) { + //public static int abs​(int a):返回参数的绝对值 + System.out.println(Math.abs(88)); + System.out.println(Math.abs(-88)); + System.out.println("--------"); + + //public static double ceil​(double a):返回大于或等于参数的最小double值,等于一个整数 + System.out.println(Math.ceil(12.34)); + System.out.println(Math.ceil(12.56)); + System.out.println("--------"); + + //public static double floor​(double a):返回小于或等于参数的最大double值,等于一个整数 + System.out.println(Math.floor(12.34)); + System.out.println(Math.floor(12.56)); + System.out.println("--------"); + + //public static int round​(float a):按照四舍五入返回最接近参数的int + System.out.println(Math.round(12.34F)); + System.out.println(Math.round(12.56F)); + System.out.println("--------"); + + //public static int max​(int a,int b):返回两个int值中的较大值 + System.out.println(Math.max(66,88)); + System.out.println("--------"); + + //public static int min​(int a,int b):返回两个int值中的较小值 + + //public static double pow​(double a,double b):返回a的b次幂的值 + System.out.println(Math.pow(2.0,3.0)); + System.out.println("--------"); + + //public static double random​():返回值为double的正值,[0.0,1.0) +// System.out.println(Math.random()); + System.out.println((int)(Math.random()*100) + 1); + } +} +``` + + + +## System + +### System.exit(0); + +```java +System.out.println("开始"); +//public static void exit(int status):终止当前运行的 Java 虚拟机,非零表示异常终止 +System.exit(0); +System.out.println("结束"); +``` + +### currentTimeMillis():返回当前时间(毫秒) + +```java +//public static long currentTimeMillis():返回当前时间(以毫秒为单位) +System.out.println(System.currentTimeMillis()); +``` + + + +```java +long start = System.currentTimeMillis(); +for (int i = 0; i < 10000; i++) { + System.out.println(i); +} +long end = System.currentTimeMillis(); +System.out.println("共耗时:" + (end - start) + "毫秒"); +``` + + + + + +## Object + +自带两个方法toString()和equals(Object o),分别可以重写 + +### toString() + +```java +@Override +public String toString() { + return "Student{" + + "name='" + name + '\'' + + ", age=" + age + + '}'; +} +``` + +### equals(Object o) + +```java +@Override +public boolean equals(Object o) { + //this -- s1 + //o -- s2 + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + Student student = (Student) o; //student -- s2 + + if (age != student.age) return false; + return name != null ? name.equals(student.name) : student.name == null; +} +``` + + + +## Integer + +### 最大最小 + +```java +System.out.println(Integer.MIN_VALUE); +System.out.println(Integer.MAX_VALUE); +``` + +### 赋值 + +```java +//public static Integer valueOf​(int i):返回表示指定的 int 值的 Integer 实例 +Integer i3 = Integer.valueOf(100); +System.out.println(i3); + +//public static Integer valueOf​(String s):返回一个保存指定值的 Integer 对象 String +Integer i4 = Integer.valueOf("100"); +System.out.println(i4); +``` + +### int --- String + +```java +//int --- String +int number = 100; +//方式1 +String s1 = number + ""; +System.out.println(s1); +//方式2 +//public static String valueOf​(int i) +String s2 = String.valueOf(number); +System.out.println(s2); +System.out.println("--------"); +``` + +### String --- int + +```java +//String --- int +String s = "100"; +//方式1:String --- Integer --- int +Integer i = Integer.valueOf(s); +//public int intValue​() +int x = i.intValue(); +System.out.println(x); +//方式2 +//public static int parseInt​(String s) +int y = Integer.parseInt(s); +System.out.println(y); +``` + 1 +```java +public class IntegerTest { + public static void main(String[] args) { + //定义一个字符串 + String s = "91 27 46 38 50"; + + //把字符串中的数字数据存储到一个int类型的数组中 + String[] strArray = s.split(" "); +// for(int i=0; i Date: Wed, 9 Mar 2022 22:32:21 +0800 Subject: [PATCH 8/9] =?UTF-8?q?=E6=8A=8A=E8=87=AA=E5=B7=B1=E7=9A=84?= =?UTF-8?q?=E7=AC=94=E8=AE=B0=E5=92=8C=E4=BF=AE=E6=94=B9seazean=E7=AC=94?= =?UTF-8?q?=E8=AE=B0=E5=88=86=E5=BC=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...72\347\241\200\350\257\255\346\263\225.md" | 1364 ----------------- .../img/image-20220225104708732.png" | Bin 29261 -> 0 bytes .../\345\237\272\347\241\200.md" | 185 --- 3 files changed, 1549 deletions(-) delete mode 100644 "zyc/\345\237\272\347\241\200\350\257\255\346\263\225/\345\237\272\347\241\200\350\257\255\346\263\225.md" delete mode 100644 "zyc/\351\273\221\351\251\254/img/image-20220225104708732.png" delete mode 100644 "zyc/\351\273\221\351\251\254/\345\237\272\347\241\200.md" diff --git "a/zyc/\345\237\272\347\241\200\350\257\255\346\263\225/\345\237\272\347\241\200\350\257\255\346\263\225.md" "b/zyc/\345\237\272\347\241\200\350\257\255\346\263\225/\345\237\272\347\241\200\350\257\255\346\263\225.md" deleted file mode 100644 index 209f066..0000000 --- "a/zyc/\345\237\272\347\241\200\350\257\255\346\263\225/\345\237\272\347\241\200\350\257\255\346\263\225.md" +++ /dev/null @@ -1,1364 +0,0 @@ -# 快捷键 - -1.psvm+回车 可以打出 -2.sout+回车 可以打出 -3.fori+回车 可以打出 -4.Ctrl+Alt+V补全代码 -5.alt + insert get set -6.Ctrl+Alt+L 整理格式 - - - -# 基础 - -## 变量 - -```java -byte b = 10; -System.out.println(b); - -//定义short类型的变量 -short s = 100; -System.out.println(s); - -//定义int类型的变量 -int i = 10000; -System.out.println(i); - -//定义double类型的变量 -double d = 13.14; -System.out.println(d); - -//定义char类型的变量 -char c = 'a'; -System.out.println(c); - -//定义boolean类型的变量 -//boolean b = true; -//System.out.println(b); -boolean bb = true; -System.out.println(bb); -System.out.println("--------"); - -//定义long类型的变量 -long l = 10000000000L; -System.out.println(l); -System.out.println("--------"); - -//定义float类型的变量 -float f = 13.14F; -System.out.println(f); -``` - - - - - -## 输出sout - -```java -system.out.println("HelloWorld"); -``` - -## 三元运算符 - -```java -boolean b = weight1 == weight2 ? true : false; -int tempHeight = height1 > height2 ? height1 : height2; -int max = a > b ? a : b; -``` - -## 输入 - -```java -import java.util.Scanner; - -Scanner sc = new Scanner(System.in); - -//读一个整数: -int n = sc.nextInt(); - -//读一个字符串: -String s = sc.next(); - -//读一个浮点数: -double t = sc.nextDouble(); - -//读一整行: -String s = sc.nextLine(); - -//判断是否有下一个输入可以用 -//sc.hasNext() 或 sc.hasNextInt() 或 sc.hasNextDouble() - -``` - -## if - -```java -if(week == 1) { - System.out.println("星期一"); -} else if(week == 2) { - System.out.println("星期二"); -} else if(week == 3) { - System.out.println("星期三"); -} else if(week == 4) { - System.out.println("星期四"); -} else if(week == 5) { - System.out.println("星期五"); -} else if(week == 6) { - System.out.println("星期六"); -} else { - System.out.println("星期日"); -} -``` - -1 - -```java -if(score>100 || score<0) { - System.out.println("你输入的分数有误"); -} else if(score>=95 && score<=100) { - System.out.println("山地自行车一辆"); -} else if(score>=90 && score<=94) { - System.out.println("游乐场玩一次"); -} else if(score>=80 && score<=89) { - System.out.println("变形金刚玩具一个"); -} else { - System.out.println("胖揍一顿"); -} -``` - -## switch - -```java -switch(week) { - case 1: - System.out.println("星期一"); - break; - case 2: - System.out.println("星期二"); - break; - case 3: - System.out.println("星期三"); - break; - case 4: - System.out.println("星期四"); - break; - case 5: - System.out.println("星期五"); - break; - case 6: - System.out.println("星期六"); - break; - case 7: - System.out.println("星期日"); - break; - default: - System.out.println("你输入的星期数有误"); - break; -} -``` - -1 - -```java -switch(month) { - case 1: - case 2: - case 12: - System.out.println("冬季"); - break; - case 3: - case 4: - case 5: - System.out.println("春季"); - break; - case 6: - case 7: - case 8: - System.out.println("夏季"); - break; - case 9: - case 10: - case 11: - System.out.println("秋季"); - break; - default: - System.out.println("你输入的月份有误"); -} -``` - -## 循环 - -```java -int j = 1; -do { - System.out.println("HelloWorld"); - j++; -}while(j<=5); -``` - -1 - -```java -//输出所有的水仙花数必然要使用到循环,遍历所有的三位数,三位数从100开始,到999结束 -for(int i=100; i<1000; i++) { - //在计算之前获取三位数中每个位上的值 - int ge = i%10; - int shi = i/10%10; - int bai = i/10/10%10; - - //在判定水仙花数的过程中,满足条件不再输出,更改为修改count的值,使count+1 - if(ge*ge*ge + shi*shi*shi + bai*bai*bai == i) { - count++; - } -} -``` - - - -```java -int j = 1; -while(j<=5) { - System.out.println("HelloWorld"); - j++; -} -``` - -1 - -```java -for(int hour=0; hour<24; hour++) { - for(int minute=0; minute<60; minute++) { - System.out.println(hour + "时" + minute + "分"); - } - System.out.println("--------"); -} -``` - -1 - -```java -for(int i = 1; i<=5; i++) { - if(i%2 == 0) { - //continue; - break; - } -``` - -## Random - -```java -Random r = new Random(); - -//用循环获取10个随机数 -for(int i=0; i<10; i++) { - //获取随机数 - int number = r.nextInt(10); - System.out.println("number:" + number); -} -``` - -1 - -## 数组array - -```java -int[] arr = new int[3]; -int[] arr = {11, 22, 33, 44, 55}; -/* -左边: -int:说明数组中的元素类型是int类型 -[]:说明这是一个数组 -arr:这是数组的名称 -右边: -new:为数组申请内存空间 -int:说明数组中的元素类型是int类型 -[]:说明这是一个数组 -3:数组长度,其实就是数组中的元素个数 -*/ - -//输出数组名 -System.out.println(arr); //[I@880ec60 - -//输出数组中的元素 -System.out.println(arr[0]); -System.out.println(arr[1]); -System.out.println(arr[2]); -``` - - - -```java -int[] arr = new int[2]; -int[] arr2 = new int[3]; - -//分别输出数组名及元素 -System.out.println(arr); -System.out.println(arr[0]); -System.out.println(arr[1]); - -System.out.println(arr2); -System.out.println(arr2[0]); -System.out.println(arr2[2]); - -//然后分别给数组中的元素赋值 -arr[1] = 100; -arr2[0] = 200; -arr2[2] = 300; - -//分别再次输出数组名及元素 -System.out.println(arr); -System.out.println(arr[0]); -System.out.println(arr[1]); - -System.out.println(arr2); -System.out.println(arr2[0]); -System.out.println(arr2[2]); - -输出 -[I@58ceff1 -0 -0 -[I@7c30a502 -0 -0 -[I@58ceff1 -0 -100 -[I@7c30a502 -200 -300 -``` - - - -## 标准类 - -快捷键Alt+Ins - -```java -public class Student { - //成员变量 - private String name; - private int age; - - //构造方法 - public Student() { - } - - public Student(String name, int age) { - this.name = name; - this.age = age; - } - - //成员方法 - public void setName(String name) { - this.name = name; - } - - public String getName() { - return name; - } - - public void setAge(int age) { - this.age = age; - } - - public int getAge() { - return age; - } - - public void show() { - System.out.println(name + "," + age); - } -} -``` - -## 字符串String - -### 初始化 - -构造方法的方式得到对象 - -```java -//构造方法的方式得到对象 -char[] chs = {'a', 'b', 'c'}; -String s1 = new String(chs); -``` - -直接赋值的方式得到对象 - -```java -//直接赋值的方式得到对象 -String s3 = "abc"; -String s4 = "abc"; -``` - -源码 - -```java -public String(char value[]) { - this(value, 0, value.length, null); -} - -String(char[] value, int off, int len, Void sig) { - if (len == 0) { - this.value = "".value; - this.coder = "".coder; - return; - } - if (COMPACT_STRINGS) { - byte[] val = StringUTF16.compress(value, off, len); - if (val != null) { - this.value = val; - this.coder = LATIN1; - return; - } - } - this.coder = UTF16; - this.value = StringUTF16.toBytes(value, off, len); -} -``` - -### 赋值 - -键盘录入一个字符串,用 Scanner 实现 - -```java -//创建对象 -Scanner sc = new Scanner(System.in); - -//接收数据 -System.out.println("请输入一个字符串数据:"); -//String line = sc.nextLine(); -//Ctrl+Alt+V 赋值快捷键 -String line = sc.nextLine(); -``` - -### 比较 - -比较字符串内容是否相同.equals() - -```java -//比较字符串内容是否相同 -System.out.println(s1.equals(s2)); -System.out.println(s1.equals(s3)); -System.out.println(s3.equals(s4)); -``` - -### 方法 - -#### 长度.length() - -```java -int len = site.length(); -``` - -#### 连接字符串 - -```java -// 第一种 string1.concat(string2); -"我的名字是 ".concat("Runoob"); -// 第二种 “+” -String string1 = "菜鸟教程网址:"; -System.out.println("1、" + string1 + "www.runoob.com"); -// 1、菜鸟教程网址:www.runoob.com -``` - -#### 格式化字符串 - -```java -String fs; -fs = String.format("浮点型变量的值为 " + - "%f, 整型变量的值为 " + - " %d, 字符串变量的值为 " + - " %s", floatVar, intVar, stringVar); -``` - -#### 返回指定索引处的 char 值。charAt() 截取一个字符 - -```java -char charAt(int index) -``` - -#### replace() 替换 - -```java -//它有两种形式,第一种形式用一个字符在调用字符串中所有出现某个字符的地方进行替换,形式如下: - -String replace(char original,char replacement) - -//例如: -String s="Hello".replace('l','w'); - -//第二种形式是用一个字符序列替换另一个字符序列,形式如下: - -String replace(CharSequence original,CharSequence replacement) - -``` - -#### getChars() 截取多个字符 - -void getChars(int sourceStart,int sourceEnd,char target[],int targetStart) - -sourceStart指定了子串开始字符的下标,sourceEnd指定了子串结束后的下一个字符的下标。因此, 子串包含从sourceStart到sourceEnd-1的字符。接收字符的数组由target指定,target中开始复制子串的下标值是targetStart。 - -```java -String s="this is a demo of the getChars method."; - -char buf[]=new char[20]; - -s.getChars(10,14,buf,0); -``` - - - -#### trim() 去掉起始和结尾的空格 - -#### valueOf() 转换为字符串 - -#### toLowerCase() 转换为小写 - -#### toUpperCase() 转换为大写 - -#### indexOf()和lastIndexOf() - -indexOf() 查找字符或者子串第一次出现的地方。 - -lastIndexOf() 查找字符或者子串是后一次出现的地方。 - -#### toCharArray() 方法将字符串转换为字符数组。 - -```java -String Str = new String("www.runoob.com"); -//System.out.println(Str[0]); 出错 - -System.out.print("返回值 :" ); -System.out.println( Str.toCharArray()[0] ); -//输出w -``` - - - - - -## 字符串StringBuilder(可改) - -```java -/* -StringBuilder构造方法: -public StringBuilder():创建一个空白可变字符串对象,不含有任何内容 -public StringBuilder(String str):根据字符串的内容,来创建可变字符串对象 - */ -//public StringBuilder():创建一个空白可变字符串对象,不含有任何内容 -StringBuilder sb = new StringBuilder(); -System.out.println("sb:" + sb); -System.out.println("sb.length():" + sb.length()); - -//public StringBuilder(String str):根据字符串的内容,来创建可变字符串对象 -StringBuilder sb2 = new StringBuilder("hello"); -System.out.println("sb2:" + sb2); -System.out.println("sb2.length():" + sb2.length()); - -``` - -### 方法 - -#### .append() - -```java -sb.append("hello").append("world").append("java"); - -``` - -#### String转换.toString() - -```java -StringBuilder sb = new StringBuilder(); -sb.append("hello"); -//public String toString():通过 toString() 就可以实现把 StringBuilder 转换为 String -String s = sb.toString(); -System.out.println(s); -``` - -```java -//StringBuilder sb = s; //这个是错误的做法 - -//public StringBuilder(String s):通过构造方法就可以实现把 String 转换为 StringBuilder -StringBuilder sb = new StringBuilder(s); - -``` - -#### .reverse()反转 - - - -#### delete(int start, int end)移除 - -移除此序列的子字符串中的字符 - -```java -sb.delete(5,8); -//移除[5,8)索引的字符 -``` - -#### insert(int offset, String str)插入 - -将 `str` 参数的字符串插入此序列中。 - -```java -sb.insert(8, "Java"); -//插入到8索引开始的地方 -//Runoob..! -//Runoob..Java! -``` - -insert(int offset, int i) -将 `int` 参数的字符串表示形式插入此序列中。 - -#### replace(int start, int end, String str) - -使用给定 `String` 中的字符替换此序列的子字符串中的字符。 - -```java - -``` - -## 工具Arrays - -Array 的工具类 Arrays - -常用API: - -* `public static String toString(int[] a)`:返回指定数组的内容的字符串表示形式 -* `public static void sort(int[] a)`:按照数字顺序排列指定的数组 -* `public static int binarySearch(int[] a, int key)`:利用二分查找返回指定元素的索引 -* `public static List asList(T... a)`:返回由指定数组支持的列表 - -```java -public class MyArraysDemo { - public static void main(String[] args) { - //按照数字顺序排列指定的数组 - int [] arr = {3,2,4,6,7}; - Arrays.sort(arr); - System.out.println(Arrays.toString(arr)); - - int [] arr = {1,2,3,4,5,6,7,8,9,10}; - int index = Arrays.binarySearch(arr, 0); - System.out.println(index); - //1,数组必须有序 - //2.如果要查找的元素存在,那么返回的是这个元素实际的索引 - //3.如果要查找的元素不存在,那么返回的是 (-插入点-1) - //插入点:如果这个元素在数组中,他应该在哪个索引上. - } - } -``` - -## ArrayList - -可以添加对象 - -```java - ArrayList array = new ArrayList(); -``` - - - -### 增 - -```java -//创建集合 -ArrayList array = new ArrayList(); - -//添加元素 -array.add("hello"); -array.add("world"); -array.add("java"); -//public void add(int index,E element):在此集合中的指定位置插入指定的元素 -array.add(1,"javase"); -``` - -### 删 - -```java -//public boolean remove(Object o):删除指定的元素,返回删除是否成功 -System.out.println(array.remove("world")); // true -System.out.println(array.remove("javaee")); // false -``` - -```java -//public E remove(int index):删除指定索引处的元素,返回被删除的元素 -System.out.println(array.remove(1)); -``` - -### 改 - -```java -//public E set(int index,E element):修改指定索引处的元素,返回被修改的元素 -System.out.println(array.set(1,"javaee")); -``` - -### 查 - -```java -System.out.println(array.get(0)); -System.out.println(array.get(1)); -``` - -### size - -```java -//public int size():返回集合中的元素的个数 -System.out.println(array.size()); -``` - -### 输出 - -```java -//输出集合 -System.out.println("array:" + array); -``` - -## @Override - - 修饰重写,检测是否成功 - -```java - -``` - -## 抽象 - -```java -public abstract class Animal { - private String name; - private int age; - - public Animal() { - } - - public Animal(String name, int age) { - this.name = name; - this.age = age; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public int getAge() { - return age; - } - - public void setAge(int age) { - this.age = age; - } - - public abstract void eat(); -} -``` - - - -```java -public class Cat extends Animal { - - public Cat() { - } - - public Cat(String name, int age) { - super(name, age); - } - - @Override - public void eat() { - System.out.println("猫吃鱼"); - } -} -``` - -## 接口 - -```java -//说英语的接口 -public interface SpeakEnglish { - public abstract void speak(); -} -``` - -```java -public abstract class Person { - private String name; - private int age; - - public Person() { - } - - public Person(String name, int age) { - this.name = name; - this.age = age; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public int getAge() { - return age; - } - - public void setAge(int age) { - this.age = age; - } - - public abstract void eat(); -} - -``` - -```java -//抽象运动员类 -public abstract class Player extends Person { - public Player() { - } - - public Player(String name, int age) { - super(name, age); - } - - public abstract void study(); -} -``` - -1 - -```java -public class PingPangPlayer extends Player implements SpeakEnglish { - - public PingPangPlayer() { - } - - public PingPangPlayer(String name, int age) { - super(name, age); - } - - @Override - public void study() { - System.out.println("乒乓球运动员学习如何发球和接球"); - } - - @Override - public void eat() { - System.out.println("乒乓球运动员吃大白菜,喝小米粥"); - } - - @Override - public void speak() { - System.out.println("乒乓球运动员说英语"); - } -} - -``` - - - -## 匿名内部类 - -为了不添加新类,临时重写出来一个对象来使用。 - -是一个对象,是子类重写后的对象,可以用多态赋值 - -```java -Animal a = new Animal(){ - @Override - public void run() { - System.out.println("猫跑的贼溜~~"); - } -}; -``` - -a这个匿名内部类就是Animal经过重写的子类对象,Animal那个位置也可以是接口。 - - - -```java -/* - 跳高接口 - */ -public interface Jumpping { - - void jump(); - -} -``` - -```java -public class JumppingDemo { - public static void main(String[] args) { - //需求:创建接口操作类的对象,调用method方法 - JumppingOperator jo = new JumppingOperator(); - Jumpping j = new Cat(); - jo.method(j); - - Jumpping j2 = new Dog(); - jo.method(j2); - System.out.println("--------"); - - jo.method(new Jumpping() { - @Override - public void jump() { - System.out.println("猫可以跳高了"); - } - }); - - jo.method(new Jumpping() { - @Override - public void jump() { - System.out.println("狗可以跳高了"); - } - }); - - } -} -``` - -## Arrays - -```java -import java.util.Arrays -``` - -### Arrays.sort(nums); - -对数组按照升序排序 - -```java -int[] nums = {2,5,0,4,6,-10}; -Arrays.sort(nums); -for(int i :nums) - System.out.print(i+" "); -/* 之前:2 5 0 4 6 -10 -* 结果:-10 0 2 4 5 6 -*/ -``` - -反向排序, Reverse-order sort - - - -### .toString(Object[] array) - -功能:返回数组的字符串形式 - -### Arrays.fill(Object[] array,Object object) - -功能:可以为数组元素填充相同的值 - - - -## Math - -abs(int a):返回参数的绝对值 - -ceil(double a):返回大于或等于参数的最小double值,等于一个整数 - -floor(double a):返回小于或等于参数的最大double值,等于一个整数 - -round(float a):按照四舍五入返回最接近参数的int - -max(int a,int b):返回两个int值中的较大值 - -min(int a,int b):返回两个int值中的较小值(自学) - -public static double pow(double a,double b):返回a的b次幂的值 - -public static double random():返回值为double的正值,[0.0,1.0) - -```java -public class MathDemo { - public static void main(String[] args) { - //public static int abs​(int a):返回参数的绝对值 - System.out.println(Math.abs(88)); - System.out.println(Math.abs(-88)); - System.out.println("--------"); - - //public static double ceil​(double a):返回大于或等于参数的最小double值,等于一个整数 - System.out.println(Math.ceil(12.34)); - System.out.println(Math.ceil(12.56)); - System.out.println("--------"); - - //public static double floor​(double a):返回小于或等于参数的最大double值,等于一个整数 - System.out.println(Math.floor(12.34)); - System.out.println(Math.floor(12.56)); - System.out.println("--------"); - - //public static int round​(float a):按照四舍五入返回最接近参数的int - System.out.println(Math.round(12.34F)); - System.out.println(Math.round(12.56F)); - System.out.println("--------"); - - //public static int max​(int a,int b):返回两个int值中的较大值 - System.out.println(Math.max(66,88)); - System.out.println("--------"); - - //public static int min​(int a,int b):返回两个int值中的较小值 - - //public static double pow​(double a,double b):返回a的b次幂的值 - System.out.println(Math.pow(2.0,3.0)); - System.out.println("--------"); - - //public static double random​():返回值为double的正值,[0.0,1.0) -// System.out.println(Math.random()); - System.out.println((int)(Math.random()*100) + 1); - } -} -``` - - - -## System - -### System.exit(0); - -```java -System.out.println("开始"); -//public static void exit(int status):终止当前运行的 Java 虚拟机,非零表示异常终止 -System.exit(0); -System.out.println("结束"); -``` - -### currentTimeMillis():返回当前时间(毫秒) - -```java -//public static long currentTimeMillis():返回当前时间(以毫秒为单位) -System.out.println(System.currentTimeMillis()); -``` - - - -```java -long start = System.currentTimeMillis(); -for (int i = 0; i < 10000; i++) { - System.out.println(i); -} -long end = System.currentTimeMillis(); -System.out.println("共耗时:" + (end - start) + "毫秒"); -``` - - - - - -## Object - -自带两个方法toString()和equals(Object o),分别可以重写 - -### toString() - -```java -@Override -public String toString() { - return "Student{" + - "name='" + name + '\'' + - ", age=" + age + - '}'; -} -``` - -### equals(Object o) - -```java -@Override -public boolean equals(Object o) { - //this -- s1 - //o -- s2 - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - - Student student = (Student) o; //student -- s2 - - if (age != student.age) return false; - return name != null ? name.equals(student.name) : student.name == null; -} -``` - - - -## Integer - -### 最大最小 - -```java -System.out.println(Integer.MIN_VALUE); -System.out.println(Integer.MAX_VALUE); -``` - -### 赋值 - -```java -//public static Integer valueOf​(int i):返回表示指定的 int 值的 Integer 实例 -Integer i3 = Integer.valueOf(100); -System.out.println(i3); - -//public static Integer valueOf​(String s):返回一个保存指定值的 Integer 对象 String -Integer i4 = Integer.valueOf("100"); -System.out.println(i4); -``` - -### int --- String - -```java -//int --- String -int number = 100; -//方式1 -String s1 = number + ""; -System.out.println(s1); -//方式2 -//public static String valueOf​(int i) -String s2 = String.valueOf(number); -System.out.println(s2); -System.out.println("--------"); -``` - -### String --- int - -```java -//String --- int -String s = "100"; -//方式1:String --- Integer --- int -Integer i = Integer.valueOf(s); -//public int intValue​() -int x = i.intValue(); -System.out.println(x); -//方式2 -//public static int parseInt​(String s) -int y = Integer.parseInt(s); -System.out.println(y); -``` - -1 - -```java -public class IntegerTest { - public static void main(String[] args) { - //定义一个字符串 - String s = "91 27 46 38 50"; - - //把字符串中的数字数据存储到一个int类型的数组中 - String[] strArray = s.split(" "); -// for(int i=0; i$L5G1qKO!N3f15jOxj{jZLP>oR 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 diff --git "a/zyc/\351\273\221\351\251\254/\345\237\272\347\241\200.md" "b/zyc/\351\273\221\351\251\254/\345\237\272\347\241\200.md" deleted file mode 100644 index 72e46b3..0000000 --- "a/zyc/\351\273\221\351\251\254/\345\237\272\347\241\200.md" +++ /dev/null @@ -1,185 +0,0 @@ -# 辅助键 - -![image-20220225104708732](img/image-20220225104708732.png) - -1.psvm+回车 可以打出 -2.sout+回车 可以打出 -3.fori+回车 可以打出 -4.Ctrl+Alt+V补全代码 -5.alt + insert get set -6.Ctrl+Alt+L 整理格式 - -# 目录 - -## 基础1(52) - -注释 - -关键字 - -常量 - -基本数据类型 - -变量 - -标识符(起名) - -类型转换 - -运算符 - -顺序结构 - -if else结构 - -swich结构 - -循环结构 - -Random - -## 基础2(148) - -IDEA - -数组 - -方法 - -重载 - -Debug - -类和对象 - -private - -this - -封装(标准类) - -构造方法 - -API - -String(不可变,换地址) - -StringBuilder(可变,不换地址) - -ArrayList集合(python列表) - -学生管理系统 - -## 基础3(168) - -继承 - -super - -重写 - -package - -import - -权限修饰符 - -final - -static - -## 基础4(219) - -### 多态 - -你家有只猫和狗,你喂他们时,都可以用同一种方法来喂养(因为他们都是宠物),但是你却不能用这种方式让他们做动作,比如狗会摇尾巴,猫却不会。 - -喂养这个动作就可以使用多态,也就是动物父类来调用猫狗都存在的方法,不管是否存在重写。 - -猫吃饭、狗吃饭、猫爬树、狗摇尾巴这四个动作,使用多态就可以简化为: - -动物吃饭(动物猫)、动物吃饭(动物狗)、猫爬树、狗摇尾巴 - -```java -AnimalEat(Animal c = new Cat()); -AnimalEat(Animal c = new Dog()); -Cat.climbTree(); -Dog.wagTail(); -``` - - - -### 抽象 - -抽象类为其他子类固定了一个框架,不能被实例化,更直观看到最基础的特征,可以理解成“目录”、“提纲”、“模板”。 - -抽象类会提出子类会什么什么,但子类怎么实现它不管。 - -### 接口 - -更彻底的抽象,里面默认抽象方法 - -Java是单继承,接口可以为其他的特征添加补丁,或者和形容词一样修饰类,并且一个类可以有很多形容词。主要的分类提取成父类,次要的提取成接口。 - -乒乓球运动员,乒乓球教练,篮球运动员,篮球教练 这四个对象,类可以是: - -乒乓球运动员:运动员(子类)——人(父类)+ 乒乓球的(接口) - - - -### 内部类 - - - -### 匿名内部类 - -为了不添加新类,临时重写出来一个对象来使用。 - -是一个对象,是子类重写后的对象,可以用多态赋值 - -```java -Animal a = new Animal(){ - @Override - public void run() { - System.out.println("猫跑的贼溜~~"); - //System.out.println(n); - } -}; -``` - -a这个匿名内部类就是Animal经过重写的子类对象,Animal那个位置也可以是接口。 - -Math - -System - -Object - -冒泡排序 - -引用数据类型 - -### Arrays - -是一个静态工具类,里面的方法都是静态 - - - -Integer - -Date - -Calendar - -异常 - -List集合 - -Set集合 - -泛型 - -Map - -HashMap From 002d25f57163de4b1c621deda838779bc7c0c5be Mon Sep 17 00:00:00 2001 From: zyc Date: Sat, 12 Mar 2022 23:43:53 +0800 Subject: [PATCH 9/9] 20220312 --- Java.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Java.md b/Java.md index af83e42..4f7d034 100644 --- a/Java.md +++ b/Java.md @@ -136,6 +136,13 @@ Java 语言提供了八种基本类型。六种数字类型(四个整数型, int i2 = (int) l2; ``` +* 自动类型提升是指容量小的数据类型的变量与容量大的数据类型的变量做运算时,得到的结果自动提升为容量大的数据类型。 + + byte、char、short--> int--> long--> float--> double + 特别的,当byte、char、short三种类型的变量互相做运算时,或者自己和自己本身做运算时,结果都为int型 + + + * 隐式类型转换: 字面量 1 是 int 类型,它比 short 类型精度要高,因此不能隐式地将 int 类型向下转型为 short 类型