一.算法题部分收获
<1>关于String的相关方法:
1.遍历String方法:用for循环,每次获取一个元素 char temp =s.charAt(i);
2.把char[]转化为String:String res=String.valueOf(char[]);
3.把String逆置:
String str="abc";
String res=new StringBuffer(str).reverse().toString();
4.String返回特定的字串:
String str="abcde";
String res=substring(0,3) //包含起始,不包含结尾,所以返回abc
<2>关于Steck和Queue的相关方法:
在出栈和出队方法之前一定要保证栈和队列非空,否则会出现空栈空队列异常。这个特殊情况要考虑到。
二.JAVA部分收获
关于类访问修饰符的作用范围
1.JAVA的封装特性: (JAVA三大特性:封装 继承 多态)
1.封装步骤:
<1>属性私有化,外部不能直接修改
<2>利用public void Set方法修改属性 构造器可以和set方法结合
<3>利用public XX get方法获取属性的值
2.JAVA的继承特性:
<1>JAVA为什么要使用继承? 解决代码复用性问题,关键字extends
<2>JAVA继承简单示意图:
<3>JAVA继承的细节问题:
1.子类不能直接访问父类私有属性和方法,要通过父类提供的公共方法去访问。
2.子类必须调用父类的构造器完成初始化。
3.当创建子类对象时,不论调用子类哪个构造器,系统默认调用父类无参构造器。如果父类没有提供无参构造器,需要在子类的构造器中用super(参数列表)关键字去选择调用父类哪个构造器,否则编译失败。
4.super使用时,必须放在子类构造器第一行。
5.super和this都只能在构造器第一行,两者不能同时出现在同一个构造器。
6.JAVA所有类都是Object类的子类。
7.创建子类对象,先调用顶级父类构造器,一直往下,直到调用该子类构造器。
8.JAVA是单继承,只能有一个直接父类。思考:如何同时让A类继承B和C类?让A继承B,B继承C
9.不能滥用继承,子类父类要有正确的逻辑关系。如:猫继承动物类,小学生继承学生类。
<4>JAVA继承的本质:
1.首先在方法区加载类信息:顺序为 顶级父类->该子类
2.在堆中为对象分配内存,内存地址0x11,首先为爷爷类属性分配空间,为name和hobby分配内存空间,并在常量池中创建变量,堆中存放地址。其次是爸爸类,age是基本数据类型,直接存放在堆中。最后是儿子类。
3.然后main方法中在栈中创建son对象指向该内存地址。整个继承关系初始化完毕
Q:若儿子类对象查询name,返回的是哪个name?
A:(1)首先查找儿子类是否有name变量,若有且可访问,则返回。
(2)否则一直向上查找,直到Object类为止。
<5>super关键字:super.方法名/变量名
1.super代表父类的引用,用于访问父类属性,方法,构造器。不能访问父类私有属性。
2.若该类上级类有多个同名属性,super关键字采用就近原则,先查直接父类,查不到再往上。
<6>this和super的区别: