java笔记类与对象3.7-3.10 2020.3.17
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相关推荐
- java学习笔记-类与对象示例
类与对象 环境 类和对象的概念 代码格式 实例化对象 调用方法 小游戏:王者solo赛 问题:如果有100个英雄呢? 继承 概念 格式 具体内容 子类可以继承到父类的哪些 方法重写: 自动转型: 优点 ...
- java面向对象-类和对象
Java面向对象笔记 文章目录 Java面向对象笔记 java面向对象 类和对象 什么是类 定义 创建和使用 公式 构造方法 什么是构造方 怎么定义和使用构造方法 实列 This关键字 什么是成员变量 ...
- java演练 类与对象 给我一个数字还你一个字符串
java演练 类与对象 给我一个数字还你一个字符串 视频 https://www.ixigua.com/i6870502014800003598/ 代码 类 public class Game {pu ...
- java/03/类与对象,深入分析类与对象(权限修饰,构造方法和简单java类),数组的定义及使用
java/03/类与对象,深入分析类与对象(权限修饰,构造方法和简单java类),数组的定义及使用 七十年代,IBM的Smalltalk语言最先推广面向对象,后来C语言变为C++,后来C++又产生了J ...
- java学习--类与对象
文章目录 java学习--类与对象 类的定义与对象的使用 类的私有成员的使用 java学习–类与对象 类的定义与对象的使用 类的定义与对象的使用 类的定义步骤: public 类名: //定义成员变量 ...
- python入门笔记——类和对象⑤(继承)
python入门笔记--类和对象⑤(继承) # python中展现面向对象的三大特征:封装.继承.多态 # 封装:把内容封装到某个地方以便后续的使用 # 对封装来说,其实就是使用初始化构造方法将内容封 ...
- Java实用教程笔记 类与对象(续)
类与对象(续) 实例变量(动态变量) 类变量(静态变量)(数据共享)static(尽量写成public(private和protected毫无意义)) 实例方法(既可访问静态数据,又可访问动态数据)A ...
- Java实用教程笔记 类与对象
类与对象 Abstract Body instanceof 文件后缀名 .py .c .cpp .java 成员函数/成员方法/行为 interface接口 可类比C++中抽象类 IDEA快捷键操作 ...
- java private 对象_[Java笔记]类的所有构造器都是private权限,就一定没有办法实例化它的对象了么?...
笔者以前学过C++语言.众所周知,C++也是一门面向对象程序设计语言.还记得当时在大学的时候,老师讲过这样的话:类的构造函数不应该设置成private权限,这样的话还怎么去实例化类的对象?当时也信以为 ...
最新文章
- C语言中常用的数学公式
- 工作中涉及运维知识点的汇总
- lnmp php fpm 默认,LNMP(PHP-FPM)
- Leecode31. 下一个排列——Leecode大厂热题100道系列
- 泛型实现List(ListT)排序
- 余弦信号频谱表达式_信号傅里叶变换系列文章(1):傅里叶级数、傅里叶系数以及傅里叶变换...
- 《AI技术人才成长路线图》:完整版PPT及要点解读
- (41)FPGA状态机一段式
- python数据类型可变和不可变_python可变数据类型vs不可变数据类型
- Super Saiyan 寻找创业合伙人
- 通过VNC远程连接ubuntu桌面(多种客户端连接方式)
- lidar_camera_calib学习笔记(激光雷达相机标定)
- 电脑进入pe时蓝屏_电脑进入u盘pe系统蓝屏了怎么办
- js 判断系统类型和手机型号(厂商)
- 泰坦之路手机版怎么登陆服务器未响应,泰坦之旅一直登入不进去怎么办
- 谷歌地图开发地图不能显示_Google,为什么地图不能让我在家工作?
- Andorid显示圆形图片的4种方式
- 【SQL必知必会】002-基础篇:了解SQL:一门半衰期很长的语言
- Windows在与time.windows.com进行同步时出错。
- vue悬浮框自由移动+录音功能