20165320 毕业设计 第二周总结
20165320 毕业设计 第二周总结
任务及完成情况
周一 | 周二 | 周三 | 周四 | 周五 | 周六 | 周天 |
---|
内容总结
一、Java内存划分的五个部分
-
栈:存放方法中的局部变量(方法的参数,方法内部的变量),方法的运行需要在栈中进行。
-
堆:new出来的东西(变量、对象)都放在堆中,堆中数据都有一个16进制的地址值,并且有一个默认值。
- 整数默认为0
- 浮点数默认为0.0
- 字符默认为'\u0000'
- 布尔型默认为false
- 引用类型默认为null
-
方法区:存储.class信息,包含方法信息。
-
本地方法栈:与操作系统有关。
-
寄存器:与CPU有关。
-
一个简单数组实例:
-
一个简单对象实例:
二、封装性
-
隐藏一些细节信息,对于外界不可见,体现:方法与关键字private,同时对一些属性进行合理性的保护。
-
针对Private修饰的成员变量,应该定义一对Get对Set方法进行访问。其中对于Boolean型,get方法应写成isXxx形式
-
简单实例如下:
class person{ private int age; public void Setage(int age){ this.age = age; } public void Getage(){ return age; } }
三、一个标准的类
-
为所有的成员变量使用Private修饰。
-
为每一个成员变量编写Get与Set方法。
-
编写一个无参构造方法。
-
编写一个全参构造方法。
-
简单实例如下:
class person{ private int age; public person(){} public person(int age){ this.age = age; } }
四、Arrylist<>简单使用
-
Arrylist<>为大小可变的数组,<>中代表的是泛型,只能是引用类型,不能是基本类型(byte、short、int、long、float、double、char、boolean),如有必要,可以使用包装类(Byte、Short、Integer、Long、Float、Double、Character、Boolean)。 从JDK1.5开始,支持自动装箱与拆箱。
-
常用方法:
- 从集合中获取元素:
public E get (int dex) //参数是索引编号
- 从集合中添加元素:
public boolean add (E e) //参数是泛型
- 从集合中删除元素:
public E remove (int dex) //参数是泛型
- 获取集合长度:
public int size ()
- 从集合中获取元素:
-
简单例子:
public class Main { public static void main(String[] args) { ArrayList<String > qhb1653 = new ArrayList<>(); //向全华班中添加人员 boolean success = qhb1653.add("曹大学姐"); qhb1653.add("李门头"); qhb1653.add("孙WJ"); qhb1653.add("勺王申"); //打印集合中的数据 System.out.println("组成人员:"+qhb1653); //获取集合数据 String leader = qhb1653.get(1); System.out.println("头头是"+leader); //删除GK No.1 String nb =qhb1653.remove(2); System.out.println("被删了的人是:"+nb); //获取集合长度 int num = qhb1653.size(); System.out.println("全华班的人数为:"+(num+1)); } }
五、字符串 String
-
字符串的内容永不改变,可以共享使用,效果相当于char[]型字符数组,但底层原理是byte[]字节数组。
-
常见四种构造方法:
- 创建空白数组,内容为空:
public String ()
- 根据字符数组的内容,创建对应字符串:
public String (char[] array)
- 根据字节数组内容,创建对应字符串:
public String (byte[] array)
- 直接String:
String str = " "
PS:直接双引号的字符串,在字符串常量池中。 - 简单实例:
- 创建空白数组,内容为空:
-
对于字符串这种引用类型来说,==比较的是地址值,内容的比较需要用equals。
String str1 = "ABC"; char [] charArray = {'A','B,'C'}; String str2 = new String (charArray); System.out.println(str1.equals(str2);
-
常用方法:
- 获取字符串长度:
public int length()
- 将当前字符串与参数字符串拼接:
public String concat (String str)
- 获取指定索引位置的单个字符:
public char charAt (int index)
- 查找参数字符串在本字符串中首次出现的索引位置:
public int indexOf(String str)
- 截取从参数位置到字符串末尾,返回新字符串:
public String substring(int index)
- 截取从begin开始到end结束的字符串:
public String substring(int begin,int end)
- 字符串内容替换:
public String replace(old String , new String)
- 获取字符串长度:
-
简单例子:
六、关键字
-
Static关键字:如果一个成员变量/方法使用了static关键字,这个变量/方法不再属于对象,而是属于类,多个对象共享,静态方法可以直接使用类名调用。
- 注意事项:静态中不能访问非静态,也不能使用this关键字,根据类名访问静态成员变量时,与对象无关。
-
简单实例:
七:继承性
-
继承主要解决的是共性抽取,子类可以有父类的内容,还可以拥有自己专有的内容。
-
格式:
public class A extends B {}
-
访问重名成员变量特点:
- 直接通过子类对象访问成员变量,优先用子类,没有的话向上找。
- 间接通过成员方法访问成员变量,方法在哪个类里面,优先用哪个类中的成员变量,没有向上找。
-
创建子类对象,访问成员方法时,对象是谁,优先用谁,没有向上找。
-
重写:@Overri 方法名称与参数列表都一样。
- 子类方法的返回值必须小于等于父类方法的返回值范围。
- 子类方法的权限必须大于等于父类方法的权限修饰符。
-
子类构造方法中有一个默认的super()调用,先调用父类构造,再执行子类构造。
-
super 与 this内存图
-
Java继承的特点:
-
一个子类的直接父类只能有唯一一个。
-
父类可以多级继承,有多个子类。
-
八:抽象类与抽象方法
-
抽象方法:加上abstract关键字,去掉大括号,方法体内容不确定。
-
抽象类:抽象方法所在的类必须是抽象类。
-
使用方法:
- 不能直接创建抽象类对象,必须用子类继承抽象父类。
- 子类必须覆盖重写父类抽象方法,去掉抽象方法的abstract关键字。
- 创建子类对象使用。
-
简单实例:
public abstract class LaoBa{ public abstract void eat(); } public class sxz extends LaoBa{ public void eat(){ System.out.println("奥利给,干了兄弟们"); } }
九、接口
-
接口是多个类的公共规范,一种引用数据类型,最重要的内容就是其中的抽象方法。实现类必须覆盖重写所有抽象方法。
-
格式如下:
public interface 接口名称 { //接口内容 } public class 实现类名 implements 接口名{ // 实现接口内容 }
-
接口当中的抽象方法,修饰符默认是两个固定的关键字:
[public] [abstract] 返回值 方法名 (参数列表) {方法体}
。 -
默认方法可以解决接口升级的问题:
[public] [default] 返回值 方法名 (参数列表) {方法体}
-
静态方法:
public static 方法名 (参数列表) {方法体}
-
私有方法:抽取共用方法,解决两个默认方法/静态方法之间重复代码的问题。
private [static] 返回值 方法名 (参数列表) {方法体}
jdk9之后只有接口本身才能用,不能被实现类调用。 -
接口当中的常量,必须进行明确的赋值,并且常量名完全大写默认用
[public] [static] [final] 返回值 方法名 (参数列表) {方法体}
修饰。 -
接口不能有构造方法,也没有静态代码块。
十、多态(这一部分目前接触的比较少)
-
多态分为编译时多态与运行时多态,第一个通过方法重载实现,第二个通过方法覆盖。
-
通过类名访问成员变量时,看等号左边。
-
通过成员方法访问成员变量,看该方法属于谁。
-
口诀:访问变量都看左边,方法运行时看右边。
待解决的问题&下周的计划
- 待解决的问题:学习效率较低,注意力不集中,急待改善,以前学过的很多知识,很久不用,都忘了....
- 下周的计划:完成开题报告答辩与Java基础知识的回顾,开始进入Android应用开发基础的学习。