IT十八掌掌第五天课程总结

今天学完IT十八掌第五天java基础课程:

学习内容:

1,jvm栈空间设置

堆空间设置:    java -Xmx<size>

java -Xms<size>

栈空间设置: java -Xss<size>

死循环不会导致栈溢出,因为在不断的压栈,弹栈

方法不断迭代会导致栈溢出,不断的在压栈(方法帧)

2,继承

构造函数:

为什么没有返回值。

因为构造函数就是为了返回对象的,固定了,所以没必要定义返回值类型。

代码块

-----------------------

构造代码块

|-----先于构造函数调用

1,局部代码块

在函数内部定义,格式为{ }

不能使用static修饰,//因为静态代码块随着类的加载而加载,在函数内部没办法初始化。

2,构造代码块

|---也是类的成员,和成员变量,成员函数同级。

构造对象时,先调用构造代码块,然后是构造函数。

构造代码块+static修饰符 ---->静态代码块

静态代码块在类加载的时候执行,而且只执行一次

静态代码块

----------------------------

哪些时候使用静态呢?

1,不涉及对象操作的数据

2,所有对象操作的共享数据。

手动控制类加载使用Class.forName("classname"),默认加载类时,执行代码块。

Class.forName(String,boolean initialize,ClassLoader)可以控制加载时是否初始化。

继承(上)

-----------------------------------

1,将共性内容抽取

2,很好的进行重用

3, extends

class B extends A { . . . .}

4,java只支持单继承,不支持多继承

5, java支持多层继承(继承体系)

|---    class A

|--- class B extends A

|--- class C extends B

6,super关键字:超类的,父类的

7,父类的私有属性不能被子类继承,私有方法也不能被子类覆盖。

javabean的规范

------------------

私有的属性,

公有的getter/setter.

函数重写(override)

-------------------------------------------------

特别注意:子类在覆盖父类的方法时,权限是放大或不变的过程,不允许权限降低

比如父类方法为public ,子类覆盖的方法权限为private;总之,覆盖时,子类方法权限一定不小于父类方法权限。

final

--------------------

1.修饰类,表示类不能被继承。

2.修饰方法,表示方法不能被重写。

私有方法可以加final,没有意义,编译通过。(不可能发生)

3.修饰变量,只能被赋值一次。如果不赋值,编译通不过。

3,抽象类    由abstract修饰,将诸多子类的共性抽取,但没有明确的功能主体。

1,抽象类不能被直接创建实例,

2,抽象方法没有功能主体,必须在抽象类中 , 为什么?

(反证,如果抽象方法在非抽象类中,那么就可以被对象调用,而该方法没有功能主体,所以必须定义在抽象类中)

3,抽象类中可以没有抽象方法,而且抽象类中的非抽象方法可以调用本类中的抽象方法,为什么?

(因为抽象类不能直接实例化,所以非抽象方法不会被本类实例调用,抽象方法自然也不会被调用了,所以符合抽象规则)

4,抽象类的非抽象子类必须实现(重写)该抽象类中的所有抽象方法,因为非抽象子类实例需要具备从父类继承的方法的具体实现。

而抽象类的抽象子类可以不实现该抽象类中的所有抽象方法。

5,抽象类的非抽象子类在创建对象时,会先调用父类的构造函数(默认调用的是空参数构造),然后调用自己的构造函数。

相当于super(),也可以显式调用带参的父类构造函数,super(args1,args2,....)

6,     abstract + static            非正常的修饰符组合        ,抽象是为了不让创建对象调用,封住入口,加static,可以通过类名.调用,矛盾

abstract + final             非正常的修饰符组合            抽象方法在非抽象子类中必须重写(具体实现),加final不能被重写,矛盾

abstract + private         非正常的修饰符组合           抽象方法在非抽象子类中必须重写(具体实现), 加private,该抽象类的非抽象子类没有权限访问。

4,接口                    面向接口编程目的,降低耦合度。

interface

特点:

1,接口是对外暴露的规则。

2,接口是程序的功能扩展

3,接口的出现降低耦合性

4,接口可以用来多实现

5,类在继承其他类的时候可以实现多个接口

6,接口之间可以有继承关系

遇到的问题:

1,构造函数,构造代码块,静态代码块的执行顺序是怎样的,为什么

静态代码块随着类的加载执行,对类进行初始化动作,创建对象时,先执行构造代码块,然后执行构造函数

一般执行构造代码块初始化对象共有属性,构造函数,初始化对象特有属性

2,super和this作用以及用法以及注意事项?

见作业

3,白富美接口案例

需要帮助的问题

白富美案例。

时间: 2024-12-26 15:17:36

IT十八掌掌第五天课程总结的相关文章

IT十八掌掌第七天课程总结

今天学完IT十八掌第七天java基础课程: 学习内容: 1,复习多态,抽象类与接口异同,适配器模式 2,匿名内部类 new InterfaceDemo(){具体方法实现 }; 3,异常 -------------------------------- Throwable |---Error |---Exception 举例:RuntimeException运行时异常 getMessage() toString()方法 printStackTrace() 打印栈跟踪信息; 举例: throws  

IT十八掌掌第四天课程总结

今天学完IT十八掌第四天java基础课程: 学习内容: java基本数据类型: ----------------------- byte    :    一个字节,-128 ~ 127  = 256 short    :    两个字节, -32768 ~ 32767 int        :    四个字节, long    :    八个字节, float    :    4字节 double    :    8字节 boolean    :    1个字节 char    :    2个字

IT十八掌掌第十三天课程总结

今天学完IT十八掌第十三天java基础课程: 学习内容: HashMap HashSet entrySet() |--getKey( ) |--getValue( ) keySet() |--get(Key) ---------- 有无缓冲区性能评测 缓冲区的原理是先将字符写入数组,然后在批量写入文件,避免对物理文件的频繁访问,提高效率. 行分割符在java中可以通过方法得到. 系统属性名是line.separator. 不同平台的行分隔符是不同的. windows7:\r\n macOS  

IT十八掌掌第十七天课程总结

今天学完IT十八掌第十七天java基础课程: 学习内容: 多线程主要应用场景是创建灵活响应的桌面程序. Socket : ---------------------- 1.ServerSocket                //侦听 ServerSocket ss = new ServerSocket(port);    //0-1023 Socket socket = ss.accept();                // 服务器 ----------------- 1.接收sock

IT十八掌掌第十二天课程总结

今天学完IT十八掌第十二天java基础课程: 学习内容: HashMap和HashTable底层都是采用数组+链表实现的. 结合了数组的寻址快,链表增删快的特点.使用散列算法(hash算法)将元素分配到数组的元素当中, hash分区默认16个,每个分区内存储的是链表 1,算出hashcode,进行&0xof取出后四位初步比较,确定分区 2,然后拿对象和链表中每个对象相比较,比较每个对象的hash码是否相同. 1. 判断hashcode是否相同 2.判断是否同一对象或者equals返回true 所

IT十八掌掌第八天课程总结

今天学完IT十八掌第八天java基础课程: 学习内容: 复习jar命令 --------------- [将类路径下的类打成jar文件] jar cvf myjar.jar -C classes/ . jar cvfe myjar.jar a.a1.a11.a111.A -C classes/ .        //e指定的入口点. [使用java -jar参数来运行程序] java -jar myjar.jar                            //执行jar文件 java

IT十八掌掌第一天课程总结

今天学完IT十八掌第一天java基础课程: 学习内容: 1,计算机基础以及windows快捷键及常见设置 |---Dos快捷键 1.dir : directory 2.d: 切换盘符. 3.tab : 补全按键 shift + tab : 反向操作. 4.cd : 进入目录 5.mkdir :mkd /make directory 创建目录 6. 目录 .. : 上级目录 . : 当前目录 7.复制 cp copy 8:del : 删除文件 del a.txt // -s :递归 // -q :

IT十八掌掌第九天课程总结

今天学完IT十八掌第九天java基础课程: 学习内容: 创建线程方式 ----------------- 1.Thread class Demo extends Thread { public void run() { } } 2.Runnable{public void run();} class Man extends Person implements Runnable{ public void run(){ ... } } new Car().start(); new Thread(ne

IT十八掌掌第十五天课程总结

今天学完IT十八掌第十五天java基础课程: 学习内容: 1.文件夹复制 --------------- 1.分析 srcFolder + destFolder d:/a        d:/b d:/b/a/xxx 2.递归取出所有文件和目录 + FileIO(FileInputStream/FileOuputStream) 3. 4. d:/xxx/x/  a/a1/a.txt        d:/b/ 9     10 d:/xxx/xx/a/a1/a2/b.txt