List,是个接口
ArrayList才是动态数组类

3.7垃圾回收机制

this的三种用法
this(1,2,3)会调用构造器

下图三个对象都是垃圾对象

让系统回收垃圾对象

回收的时候,会调用自己的finalize方法

加不加this都行,甚至可以加一个this.getName()

结果会略有不同,但都消失

3.8 static的使用
同时也是静态的




this到底指什么
当前类的对象


类加载的时候就运行静态代码块
之后程序调用构造函数时,构造函数里的才输出,所以有先后顺序


java静态代码块在什么时候会执行
未调用的时候未执行

创建新对象就要加载类,执行了

package com.example;
import sun.rmi.runtime.NewThreadAction;
import javax.sound.midi.Soundbank;
import java.util.Scanner;
import java.util.Set;public class javahello_2 {public static void main(String[] args) {System.out.println("textofmian");}
}
class A{static  {System.out.println("textofstaic");}}

类加载的时机
对于初始化阶段,虚拟机规范规定了有且只有 5 种情况必须立即对类进行“初始化”(而加载、验证、准备自然需要在此之前开始):

遇到new、getstatic 和 putstatic 或 invokestatic 这4条字节码指令时,如果类没有进行过初始化,则需要先触发其初始化。对应场景是:使用 new 实例化对象、读取或设置一个类的静态字段(被 final 修饰、已在编译期把结果放入常量池的静态字段除外)、以及调用一个类的静态方法。
对类进行反射调用的时候,如果类没有进行过初始化,则需要先触发其初始化。
当初始化类的父类还没有进行过初始化,则需要先触发其父类的初始化。(而一个接口在初始化时,并不要求其父接口全部都完成了初始化)
虚拟机启动时,用户需要指定一个要执行的主类(包含 main() 方法的那个类),
虚拟机会先初始化这个主类。
当使用 JDK 1.7 的动态语言支持时,如果一个 java.lang.invoke.MethodHandle 实例最后的解析结果 REF_getStatic、REF_putStatic、REF_invokeStatic 的方法句柄,并且这个方法句柄所对应的类没有进行过初始化,则需要先触发其初始化。
第5种情况,我暂时看不懂。

以上这 5 种场景中的行为称为对一个类进行主动引用。除此之外,所有引用类的方式都不会触发初始化,称为被动引用,例如:

通过子类引用父类的静态字段,不会导致子类初始化。
通过数组定义来引用类,不会触发此类的初始化。MyClass[] cs = new MyClass[10];
常量在编译阶段会存入调用类的常量池中,本质上并没有直接引用到定义常量的类,因此不会触发定义常量的类的初始化。




3.9类的组合


3.10summary

作业
1.输出?

public class javahello_2 {static void f(Book p) {p.width = 20;p.length = 40;}public static void main(String args[]) {Book b = new Book();b.width = 10;b.length = 20;f(b);System.out.print(" " + b.width);System.out.print(" " + b.length);}
}

20 40

2.输出?

package com.example;class Book {int width;int length;
}public class javahello_2 {static int j = 20;public static void main(String args[]) {int i = 10;javahello_2 p = new javahello_2();p.amethod(i);System.out.println(i + " and " + j);}public void amethod(int x) {x = x * 2;j = j * 2;}}

定义一个表示学生的student类,包括的域有学号、姓名、性别、年龄,包括的方法有获得学号、姓名、性别、年龄及修改年龄。编写Java程序创建student类的对象及测试其方法的功能。

package com.example;
import javax.swing.*;
class Student{int number=0;String name="aas";char sex='f';int age=0;public int getAge() {return age;}public int getNumber() {return number;}public String getName() {return name;}public char getSex() {return sex;}public void setAge(int age) {this.age = age;}
}
public class javahello_2 {public static void main(String[] args) {Student student=new Student();System.out.println(student.getSex());student.setAge(12);System.out.println(student.getAge());System.out.println(student.getName());System.out.println(student.getNumber());System.out.println(student.toString());}
}

定义一个计算矩形面积、立方体和球体体积的类。该类完成计算的方法用静态方法实现。

package com.example;class Jisuanqi{static  double jisuan(double a){return 4/3*a*a*a*Math.PI;}static  double jisuan(double a,double b){return a*b;}static  double jisuan(double a,double b,double c){return a*b*c;}
}
public class javahello_2 {public static void main(String[] args) {///用缺省处理///不用了Jisuanqi jisuanqi = new Jisuanqi();System.out.println(Jisuanqi.jisuan(9));System.out.println(Jisuanqi.jisuan(1,2));System.out.println(Jisuanqi.jisuan(4,5,6));}
}

定义一个Company类,成员变量有公司名称、雇员列表、公司每年的总收入。该类的构造方法可能有如下形式: public Company(String name) { } 也可以有更多其它形式的构造方法。或许还应该有如下方法: public void setName(String name){ } public String getName() { } 必须提供一个公共的dump方法来打印有关Company的信息,如公司名称、雇员和公司总收入。最后为Company类编写一个测试客户程序。
List不是一个类,是个接口
ArrayList才是动态数组类

package com.example;
import com.sun.org.apache.xml.internal.resolver.helpers.PublicId;
import javax.xml.soap.Name;
import java.lang.reflect.Member;
import java.util.*;
class Company{public String name="aa";public List<String> member=new ArrayList<String>();
//  public List<String> member2=new List<String>();int money=0;public void setName(String name) {this.name = name;}public Company(String name){this.name=name;}public Company(){this("undefined");}public String getName() {return name;}public void addMember(String newMember){member.add(newMember);}public void earnMoney(int newEarn){this.money+=newEarn;}public String dump(){return "name:"+name+"\n"+"menber:"+member.toString()+"\n"+"money:"+money;}
}
public class javahello_2 {public static void main(String[] args) {Company company=new Company();//testing addmembercompany.addMember("ass");company.addMember("rere");company.addMember("wewe");company.earnMoney(56);//out allSystem.out.println(company.dump());}
}

java笔记类与对象3.7-3.10 2020.3.17相关推荐

  1. java学习笔记-类与对象示例

    类与对象 环境 类和对象的概念 代码格式 实例化对象 调用方法 小游戏:王者solo赛 问题:如果有100个英雄呢? 继承 概念 格式 具体内容 子类可以继承到父类的哪些 方法重写: 自动转型: 优点 ...

  2. java面向对象-类和对象

    Java面向对象笔记 文章目录 Java面向对象笔记 java面向对象 类和对象 什么是类 定义 创建和使用 公式 构造方法 什么是构造方 怎么定义和使用构造方法 实列 This关键字 什么是成员变量 ...

  3. java演练 类与对象 给我一个数字还你一个字符串

    java演练 类与对象 给我一个数字还你一个字符串 视频 https://www.ixigua.com/i6870502014800003598/ 代码 类 public class Game {pu ...

  4. java/03/类与对象,深入分析类与对象(权限修饰,构造方法和简单java类),数组的定义及使用

    java/03/类与对象,深入分析类与对象(权限修饰,构造方法和简单java类),数组的定义及使用 七十年代,IBM的Smalltalk语言最先推广面向对象,后来C语言变为C++,后来C++又产生了J ...

  5. java学习--类与对象

    文章目录 java学习--类与对象 类的定义与对象的使用 类的私有成员的使用 java学习–类与对象 类的定义与对象的使用 类的定义与对象的使用 类的定义步骤: public 类名: //定义成员变量 ...

  6. python入门笔记——类和对象⑤(继承)

    python入门笔记--类和对象⑤(继承) # python中展现面向对象的三大特征:封装.继承.多态 # 封装:把内容封装到某个地方以便后续的使用 # 对封装来说,其实就是使用初始化构造方法将内容封 ...

  7. Java实用教程笔记 类与对象(续)

    类与对象(续) 实例变量(动态变量) 类变量(静态变量)(数据共享)static(尽量写成public(private和protected毫无意义)) 实例方法(既可访问静态数据,又可访问动态数据)A ...

  8. Java实用教程笔记 类与对象

    类与对象 Abstract Body instanceof 文件后缀名 .py .c .cpp .java 成员函数/成员方法/行为 interface接口 可类比C++中抽象类 IDEA快捷键操作 ...

  9. java private 对象_[Java笔记]类的所有构造器都是private权限,就一定没有办法实例化它的对象了么?...

    笔者以前学过C++语言.众所周知,C++也是一门面向对象程序设计语言.还记得当时在大学的时候,老师讲过这样的话:类的构造函数不应该设置成private权限,这样的话还怎么去实例化类的对象?当时也信以为 ...

最新文章

  1. C语言中常用的数学公式
  2. 工作中涉及运维知识点的汇总
  3. lnmp php fpm 默认,LNMP(PHP-FPM)
  4. Leecode31. 下一个排列——Leecode大厂热题100道系列
  5. 泛型实现List(ListT)排序
  6. 余弦信号频谱表达式_信号傅里叶变换系列文章(1):傅里叶级数、傅里叶系数以及傅里叶变换...
  7. 《AI技术人才成长路线图》:完整版PPT及要点解读
  8. (41)FPGA状态机一段式
  9. python数据类型可变和不可变_python可变数据类型vs不可变数据类型
  10. Super Saiyan 寻找创业合伙人
  11. 通过VNC远程连接ubuntu桌面(多种客户端连接方式)
  12. lidar_camera_calib学习笔记(激光雷达相机标定)
  13. 电脑进入pe时蓝屏_电脑进入u盘pe系统蓝屏了怎么办
  14. js 判断系统类型和手机型号(厂商)
  15. 泰坦之路手机版怎么登陆服务器未响应,泰坦之旅一直登入不进去怎么办
  16. 谷歌地图开发地图不能显示_Google,为什么地图不能让我在家工作?
  17. Andorid显示圆形图片的4种方式
  18. 【SQL必知必会】002-基础篇:了解SQL:一门半衰期很长的语言
  19. Windows在与time.windows.com进行同步时出错。
  20. vue悬浮框自由移动+录音功能

热门文章

  1. Ubuntu下搭建Kubernetes集群(3)--k8s部署
  2. React-Native系列Android——Native与Javascript通信原理(一)
  3. java用户界面—创建一个面板
  4. redis-sentinel高可用配置(2)
  5. Http 状态码详解
  6. QTP自动化测试视频系列
  7. 使用微软的TFS云服务来管理小型项目
  8. java toolkit invoker_有没有哪位老哥愿意帮一下新人啊
  9. markdown数学公式换行对齐_Markdown语法详细
  10. php需要什么技能,成为一个好的PHP工程师需要掌握什么技能