JAVA101-150
字符串
StringBuilder
public class Test {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder("");
for(int i = 0;i <1000000;i++){
sb.append("abc");
}
System.out.println(sb);
}
ps:打印是是属性值而不是地址值,因为java在底层做了处理
sb.append(1);
sb.append(2.3);
sb.append(true);
sb.reverse()
int len = sb.length()
String str = sb.toString()
链式编程简化代码
对应的关系可以使用查表法,通过数组的对应的下表来改变成相应的值
修改字符串
可以有两个办法:
1.用substring进行截取,把左边的字符截取出来拼接到右侧去
2.可以把字符串先变成一个字符数组,然后调整字符数组里面数据,最后再把字符数组变成字符串。
注:1、传入的参数需要改变,因为循环的时候比较的是变换后的量,传入后也需要改变变换的量
eg:`strA = rotate(strA)
2、将字符串变为数组:
toCharArray()
字符串变整数
思路:
1.先遍历字符串依次得到每一个字符‘1’‘2’‘4’‘5’‘6’‘7’‘8’‘9’
再把字符变成对应的数字即可78123569把每一个数字组合到一起123456789
result = (str. chrAt (i)-48)+result * 10 通过ASCILL表转换
重点:字符串变为数组
ArrayList集合的基本使用
1.相比于长度固定的数组,可以追加数据
2.可以存储基本数据类型与引用数据类型
3.添加对象
1.首先需要添加一个标准的javabean
package com.itheima;
import java.util.ArrayList;
public class test4 {
public static void main(String[] args) {
ArrayList<Student> list=new ArrayList<>();
Student s1= new Student("zhangsan",23);
Student s2= new Student("lisi",21);
Student s3= new Student("wangwu",21);
list.add(s1);
list.add(s2);
list.add(s3);
for (int i = 0; i < list.size(); i++) {
Student stu=list.get(i);
System.out.println(stu.getName()+","+stu.getAge() );
}
}
}
集合一开始的长度为0,如果用循环,进不去
注:
创建的学生对象是一个地址,如果给对象赋值,则最后只会显示一个对象,其余均被覆盖,因为对象是一个地址,所以每次循环要创建一个新的对象
跳出两个循环(相当于跳出指定的循环)
取一个名字
第二种写法:
System.exit()
面向对面进阶
static
private String name;
private int age;
private String gender;
public static String teacherName
加上static后所有的对象都共享 老师的姓名
私有化构造方法
目的:不让外界创建他的对象
static的注意事项
静态方法只能访问静态变量和静态方法
非静态方法可以访问静态变量或者静态方法,也可以访问非静态的成员变量和非静态的成员方法
静态方法中是没有this关键字
总结:静态方法中,只能访问静态。
非静态方法可以访问所有。
静态方法中没有this关键字
重新认识main方法
继承
小结
1.什么是继承、继承的好处?
继承是面向对象三大特征之一,可以让类跟类之间产生子父的关系。
可以把多个子类中重复的代码抽取到父类中,子类可以直接使用,减少代码冗余,提高代码的复用性
2.继承的格式?
public class 子类 extends 父类{}
3.继承后子类的特点?
子类可以得到父类的属性和行为,子类可以使用。
子类可以在父类的基础上新增其他功能,子类更强大。
注:父类要用public,否则只能在本类中访问
子类继承的功能
继承中成员变量和成员方法的继承特点
就近原则:
this:本类
super:父类
方法的重写
应用场景:当父类中方法,不能满足子类现在的需求时,我们就需要把这个方法进行重写。
方法重写注意事项和要求
1.重写方法的名称、形参列表必须与父类中的一致。
2.子类重写父类方法时,访问权限子类必须大于等于父类(暂时了解:空着不写<protected< public)
3.子类重写父类方法时,返回值类型子类必须小于等于父类
4.建议:重写的方法尽量和父类保持一致。
5.只有被添加到虚方法表中的方法才能被重写
继承中的构造方法和thissuper关键字
如:
public class Student {
String name;
int age;
String school;
//需求:
/默认为传智大学
public Student() {
//表示调用本类其他构造方法
//细节:虚拟机就不会再添加super();
this(name:null,age:e,school:"传智大学");
}
public Student(String name, int age, String school) {
this.name = name;
this.age = age;
this.school = school;
}
会调用其他构造方法
多态
当传递的是一个类,可以引入所有子类
//创建对象(多态方式)
//Fu f = new Zi();
Animal a = new Dog();
//调用成员变量:编译看左边,运行也看左边
//编译看左边:javac编译代码的时候,会看左边的父类中有没有这个变量,如果有,编译成功,如果没有编译失败。
//运行也看左边:java运行代码的时候,实际获取的就是左边父类中成员变量的值
System.out.println(a.name);//动物
//调用成员方法:编译看左边,运行看右边
//编译看左边:javac编译代码的时候,会看左边的父类中有没有这个方法,如果有,编译成功,如果没有编译失败。
a.show();///Dog --- show方法
//理解:
//Animal a = new Dog();
//现在用a去调用变量和方法的呀?是的
//而a是Animal类型的,所以默认都会从Animal这个类中去找
//成员变量:在子类的对象中,会把父类的成员变量也继承下的。父:name子:name
//成员方法:如果子类对方法进行了重写,那么在虚方法表中是会把父类的方法进行覆盖的。
转换类型:
Dog d=(Dog)a
if(a instanceof Dog){
Dog d = (Dog) a;
d.lookHome();
}else if(a instanceof Cat){
Cat c =(Cat)a;
c.catchMouse();
}else{
System.out.println("没有这个类型,无法转换");
}
通过强转,才可以调用,这是多态的弊端之一
包和final
全类名:包名+类名