day2--------If、While、For、Switch
- if(boolean){}进行判断,在需要多次进行判断的时候,可以使用卫语句进行判断(一般是判断特殊情况和违法输入)违法输入可以用return;直接退出操作
- while(boolean){},是进行循环操作时使用的语句,一般逻辑判断循环时使用 (条件不确定的循环 或者需要等待用户输入特定的条件结束的循环)
- for(){},也是进行循环操作时使用的语句,一般数值判断进行循环时使用(遍历操作 或者 是要执行固定次数操作的循环 就是已知)
- while和for的无限循环时的应用:while(true) for(;;) 然后退出循环使用break;或者return;
- switch( byte short int整数类型,char,String)不支持long
- 循环中需要注意的 continue :跳出此次循环 break:结束离他最近的那层循环
- 还有一个特殊的判断语句用法: boolean ? 数1 :数2; boolean为true时输出数1,为false时输出数2
- ”+“ 运算符 ,两边是数字时是进行加法;有一边是字符串时进行的是字符串的拼接。 1+2+""+3 输出33字符串。""+1+2+3输出123字符串
- 双重for循环:典型的双重for是冒泡排序。
day3---------数组
- 数组的定义: 元素类型[] 数组名 = new 元素类型[元素大小]; 初始赋值:int[] num = {1,2,3,4,5}; 或 int[] num = new int[]{1,2,3,4,5};
- 数组他的长度是固定的,后面会学到集合框架里的ArraysList 和LinedList 和HashList 来弥补这个缺陷;
- 数组的访问: 数组名[下标]
- 数组的下标越界异常 :java.lang.Array Index OutOf Bounds Exception: 4
- 数组中最重要的操作是遍历操作。 通过遍历操作array.fori可以进行求最大值、最小值 和 累加和,还可以用增强for循环 array.f。
- 数组的复制:下面的数组的复制都是和扩容都是复制到一个新的数组里,不对原数组进行改变。
- 数组的高效复制:System.arraycopy(source, 0, dest, 0, source.length);
source:原数组。第一个0:原数组的起始位置。dest:存放复制后数据的数组。第二个0:目标数组的起始位置。 length:复制的长度2. int[] array = Arrays.copyOf(source, source.length) 复制整个数组,也可以用来扩容(改变后面的length的值)
3.int[] array = Arrays.copyOfRange(source, 1, 4); // 复制索引 1 到 3 的元素 source:原数组 1,4 表示的是[ ),所以是复制的索引1-3的
4.int[] array = source.clone(); 简单复制一个数组
5.手动遍历进行复制
7.几种输入语句 Scanner scanner = new Scanner(System.in); //定义一个scanner 对象
8.char[] array = str.toCharArray(); //将字符串转换成字符数组
day4---------类(封装、构造方法)继承、重载、重写、多态类、抽象类
1.类的定义
类是对现实事物的抽象:Student 对象是现实中具体的个体:student1(具体的某个学生) 基于对象的共同特征抽象出类。
OOP:面对对象。 面对对象的特征:抽象、封装、继承、多态
2.定义一个简单的类
public class Student{} 定义一个简单的对象:Student student = new Student(); 这是无参构造方法
3.继承
- 当父类存在无参构造方法时,子类构造方法中的 super() 可以省略,因为编译器会自动添加。
- 当父类没有无参构造方法时,子类的构造方法中必须显式调用 super() 并传递相应的参数,以确保父类的构造方法被正确调用。
- this:代表当前类的对象 this.id=id
- super:代表父类对象
- this():调用当前类的构造方法,.
- super():调用父类构造方法
public class Rectangle {
private int width;
private int height;
public Rectangle() {
this(1, 1);//new Rectangle(1, 1)
// this.width = 1;
// this.height = 1;
}
public Rectangle(int width, int height) {
this.width = width;
this.height = height;
}
}
4.重载
1、重写(覆盖)@Override 这个一定要在定义方法前面加上(像@Test)
class Parent {
public void display() {
System.out.println("Parent's display method");
}
}
class Child extends Parent {
// 错误的重写,使用 protected 修饰符,权限小于父类的 public
@Override
protected void display() {
System.out.println("Child's display method");
}
}

5.多态:

6.抽象类、抽象方法
day5--------- 接口、静态属性、静态方法 、git基础
1.接口interface
final总结:修饰变量、类、方法final:最终的意思
- final变量:这个变量就不能被修改,就是常量 public static final double PI = 3.1415;
- final类:这个类就不能被继承
- final方法:这个方法就不能被重写
//接口就是一个纯粹的抽象类,接口就是一个标准
public interface IFly {
//public static final double PI = 3.14;
double PI = 3.14;
//public abstract void fly();
void fly();
}
如何选择接口还是抽象类
- 继承是严格的父子关系,你继承什么你就是什么:鸽子就是鸟。
父类是抽取了所有子类的共同特征,父类里面的属性和方法是所有子类所共有的属性和方法。
- 接口是一个标准,一般用在能不能具有某个功能。
把能不能飞定义称为一个接口IFly,实现了这个接口的类就具有了这个功能。
public class DaYan extends AbstractBird implements IFly {
}
2.静态属性、静态方法
小区里面业主的房子可以看成一个一个的对象,这些都是属于特定的业主所独有。但是小区里面也有一些公共设施(健身器材、绿地),这些公共设施是属于这个小区的。但是是可以被所有的业主对象所使用的。非静态的属性和方法(实例属性和方法)必须通过new对象访问,而静态的属性和方法是属于类的,在类加载到内存中就可以访问,不需要new对象就可以使用,但是可以被所有对象所共享。
3.Git 基础 (重新整理一下)
命令整理:git init //初始化本地版本库git status //查看当前文件的状态。git add . //跟踪所有改动过的文件git commit -m "修改"git log //查看通过git进行的所有改动gitk& 打开gitk工具进行图形界面观察变动


4.工具类
day6-------String、包装数据类型、集合框架
1.Sring



一些英文命名:case 严格区分大小写; equals 字符串相等; prefix 前缀;startswith()用于检查字符串是否以指定的前缀开始;isEmpty() 是否为空;

切割中 使用到的正则表达式是一种用于匹配和处理文本的强大工具,一种描述字符串模式的工具。在拆分操作中,它会在目标字符串中寻找与正则表达式模式相匹配的部分,然后在这些匹配的位置将字符串进行拆分。以下是一些常见的正则表达式:字符匹配
- **普通字符**:直接匹配字符本身,例如abc匹配字符串中连续出现的abc。
- **字符类**:用方括号[]表示,匹配方括号中的任意一个字符。例如[abc]可以匹配a、b或c。
- **否定字符类**:在方括号内开头加上^表示否定,匹配不在方括号中的任意一个字符。例如[^abc]可以匹配除了a、b、c之外的任意字符。
数量限定
- **星号***:表示前面的字符或字符类可以出现0次或多次。例如a*可以匹配空字符串,也可以匹配多个连续的a。
- **加号+**:表示前面的字符或字符类必须出现1次或多次。例如a+至少匹配一个a。
- **问号?**:表示前面的字符或字符类可以出现0次或1次。例如a?可以匹配一个a或者不匹配任何字符。
- **花括号{m,n}**:表示前面的字符或字符类至少出现m次,最多出现n次。例如a{2,4}可以匹配2个、3个或4个连续的a。
边界匹配
- **脱字符^**:表示匹配字符串的开始位置。例如^abc表示匹配以abc开头的字符串。
- **美元符号$**:表示匹配字符串的结束位置。例如abc$表示匹配以abc结尾的字符串。
- **单词边界\b**:用于匹配单词的边界,即单词和非单词字符的交界处。例如\bcat\b可以匹配cat这个单词,但不会匹配category中的cat。
分组和引用
- **括号()**:用于分组,可以将多个字符或表达式组合成一个单元,以便对这个单元进行整体的操作。例如(abc)+表示abc整体出现1次或多次。
- **反向引用**:在正则表达式中,可以使用\n(n为数字)来引用前面分组匹配到的内容。例如(a(b)c)\1可以匹配abcabc,其中\1引用了前面(a(b)c)匹配到的内容。
预定义字符类
- **\d**:匹配任意一个数字,相当于[0-9]。
- **\D**:匹配任意一个非数字字符,相当于[^0-9]。
- **\w**:匹配任意一个字母、数字或下划线,相当于[a-zA-Z0-9_]。
- **\W**:匹配任意一个非字母、数字或下划线的字符,相当于[^a-zA-Z0-9_]。
- **\s**:匹配任意一个空白字符,包括空格、制表符、换行符等,相当于[\f\n\r\t\v]。
- **\S**:匹配任意一个非空白字符,相当于[^\f\n\r\t\v]。
2.String、StringBuffer、StringBuilder异同点
String进行拼接改变,这个时候是new了一个新的字符串对象。例如:String str = str1 + str2 + str3 + str4; 每次拼接都会生成一个新的对象,这期间构造了三个新的String对象,其中两个是临时的对象会被当成垃圾回收。常量字符串的拼接,编译器会做优化,使用String就可以:String str = "Java" + "PHP" + "Python" + "C";
StringBuffer buffer = new StringBuffer();
buffer.append(str1);
buffer.append(str2);
buffer.append(str3);
buffer.append(str4);
//还可以链式编程实现
buffer.append(str1).append(str2).append(str3).append(str4);
StringBuilder builder = new Sreingbuilder();
builder.append(str1);
builder.append(str2);
builder.append(str3);
builder.append(str4);
//链式编程实现
builder.append(str1).append(str2).append(str3).append(str4);
Java 链式编程是一种编程风格,它允许你在一个对象上连续调用多个方法,每个方法都返回该对象本身,从而形成一个方法调用链。其要求主要有以下几点:1.方法返回对象本身链式编程要求在调用的每个方法中都返回当前对象(this),这样才能保证后续方法可以继续在同一个对象上调用。2.方法调用的顺序性(顺序符合最后的需求)3.可读性和维护性
3.包装数据类型:
@Test
public void test() {
Integer integer = new Integer(4);
System.out.println(integer);//4
//自动装箱
Integer integer1 = 5;
System.out.println(integer1);//5
//自动拆箱
int num = integer1;
System.out.println(num);//5
//示例分析:
Integer integer = 3;//装箱
int num = integer + 4; //拆箱 通过Integer类里的方法进行拆箱
integer = integer + 5; //先拆箱再装箱
}
//备注:虽然基本数据类型和包装数据类型互相转换有装箱和拆箱的过程,
//但是我们平时使用的时候就把包装数据类型当成基本数据类型来使用就可以。
Java 包装数据类型的意义主要体现在以下几个方面:1.方便对象操作基本数据类型不是对象,在某些需要对象的场景中使用起来不太方便。而包装数据类型是对象,具有属性和方法,可以更方便地进行各种操作。例如,在集合框架中,只能存储对象,因此需要使用包装数据类型。2.支持泛型泛型是 Java 中一种重要的特性,它允许在编写代码时使用类型参数,以提高代码的通用性和可复用性。但泛型只能用于引用类型,不能用于基本数据类型。包装数据类型使得基本数据类型也能参与泛型编程。3.提供了更多的功能和方法每个包装数据类型都提供了一些有用的方法,方便对基本数据类型进行处理。比如Integer类提供了parseInt()方法用于将字符串解析为整数,valueOf()方法用于将基本数据类型转换为包装数据类型等。4.解决基本数据类型默认值问题基本数据类型有默认值,如int默认值是 0,boolean默认值是false。在某些情况下,这种默认值可能会导致误解或错误。包装数据类型可以为null,表示没有值,
1746

被折叠的 条评论
为什么被折叠?



