接上一篇说为什么要注意java的输入缓存和c语言一样,因为在scanner中,nextInt()一类的方法在遇到空格就停止接受了,而若与nextLine()混用,首先nextLine()是接受一整行只有换行符才停止,那么有例,若我一次性输入123 456,case1:两个nextInt()则正常接受123与456。case2:第二个是nextLine()则会出现123和(空格)456的字符串,若不加以处理则会造成意料之外的错误。
———————————————————————————————————————————
一、基础
继承,Arrays集合类,String字符串,super语法,方法重写,多态(方法多态、对象多态),equals
二、进阶
static,继承的进阶,多态进阶,包和final,接口,内部类
三、常用api学习
Math,System,Runtime,Object,BigInteger,BigDecima
四、算法
二分,哈希查找,分块,冒泡排序,选择排序,递归算法,快速排序
学不完了🥹
———————————————————————————————————————————
一、StringBuilder默认容量为16,当超过容量后会变为 原容量*2+2
二、ArrayList学习(一)
import java.util.ArrayList;
/*
Arrays集合(本集主要学习ArrayList):
1.与数组对比:
·与数组不同,不可存储基本数据类型,只能存储引用类型
若一定要存储基本数据类型,要将数据做成把包装类
·与数组不同,数组的长度固定,而集合的长度可变
一个关键词:自动扩容
2.ArrayList类(java.util.包内)基本性质:
·在创建时,要用泛型来限定集合中存储数据的类型,这也是泛型的作用
使用方法为ArrayList<E>,E为类型
如:ArrayList<String> list = new ArrayList<>() 此处后面的尖括号内可以不写
·在打印时,打印的内容为集合内地址对应的值,而不是地址本身
·在打印的时候会用[]把所有数据包起来输出
3.成员方法:
·boolean add(E e) 添加内容,返回值为一个布尔值,特点是,不管添加啥返回都是true
·boolean remove(E e) 删除,删除具体的元素,成功就返回true,否则为false
E remove(int index) 删除,根据下标删除,返回被删除的元素
·E set(int index, E e) 修改,根据下标修改覆盖,返回被修改的元素
·E get(int index) 查询,根据下标查询元素,返回值为查询结果
·int size() 获取集合长度
快捷键 集合名.fori+enter 快速生成遍历循环
4.基本数据类型包装类:
·byte -> Byte short -> Short
char -> Character int -> Integer
long、float、double、boolean对应的都是大写字母的本身,只有char和int特殊
·
*/
public class MainDraft {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("aaa");
list.add("bbb");
list.add("ccc");
System.out.println(list);
boolean result = list.remove("aaa");
System.out.println(result);
result = list.remove("ddd");
System.out.println(result);
//根据下标删除
list.add("aaa");
System.out.println(list);
String str = list.remove(2);
System.out.println("删除的元素是"+str+"删除后的集合内容为\n"+list);
//修改
str = list.set(1,"mmm");
System.out.println("被修改的元素是"+str+"此时集合为\n"+list);
//包装
ArrayList<Integer> list2 = new ArrayList<>();
//jdk5后int 和 Integer类型可以互相转化
list2.add(1);
list2.add(2);
list2.add(3);
list2.add(4);
list2.add(5);
System.out.println("\n"+list2);
}
}
二、ArrayList学习(二)
注:此处Student在同包内以javabean形式已创建
import java.util.ArrayList;
import java.util.Scanner;
public class MainDraft {
public static void main(String[] args) {
ArrayList<Student> list = new ArrayList<>();
Scanner sc = new Scanner(System.in);
for (int i = 0; i < 3; i++) {
Student s = new Student();
System.out.println("请输入第"+(i+1)+"个学生的姓名");
String name = sc.next();
System.out.println("请输入第"+(i+1)+"个学生的年龄");
int age = sc.nextInt();
s.setName(name);
s.setAge(age);
list.add(s);
}
for (int i = 0; i < list.size(); i++) {
Student s = list.get(i);
System.out.println(s.getName()+","+s.getAge());
}
}
}
三、static进阶
/* static: ·修饰变量时: 1.表示静态,被该类的所有对象共享 2.调用方法: ·类名调用 ·对象调用 3.静态变量随着类创建时入栈创建,并在堆中开辟一个专门的静态区保存静态变量 ·修饰方法时: 1.多用在测试类和工具类中 2.调用方法: ·类名调用 ·对象调用 补充:工具类介绍 javabean类用来描述一些事物的类,比如student,cat等 测试类 用来检查其他类是否书写正确,带有main方法,程序的主入口 工具类 不描述事物,而只是做一些事情的类 1.构造注意事项: 类名见名知意 私有化构造方法 方法定义为静态 ·注意事项: 静态方法中没有this关键字 this代表调用方法者的地址值,而静态方法先于对象随着类创建而 创建,因此调用static方法时是获取不到对象的地址的因此无法调用 静态方法中只能访问静态内容 非静态方法可以访问所有 */