关于java中的toString方法
/* 关于 object中的 tostring方法 sun在 object类中设计 tostring方法的目的:返回java对象的字符串的表示形式 在现实开发中, object里边的 tostring方法已经不够用了 object的 tostring方法实现的结果不满意object中的 tostring方法就是要重写的 sun是这样子实现 tostring方法的 public string tostring(){ return getClass().getName() + "@" + Intger.toHexString(hashcode()); } Object中的toString方法返回:类名@Java对象的内存地址经过哈希算法得出的int类型值 再转换成十六进制 这个输出结果可以等同看做Java对象在堆中的内存地址 */ //创建一个Object类型的对象 Object object = new Object(); System.out.println(object);//java.lang.Object@47089e5f //调用一个toString 方法 System.out.println(object.toString());//java.lang.Object@47089e5f Person person = new Person("Steven",18); //调用toString方法 String pStr = person.toString(); System.out.println("person = " + pStr);
class Person { String name; int age; Person(String name , int age){ this.name = name; this.age = age; } //重写toString方法 //根据项目的需求而定 //需要显示格式:Person[name=Steven,age=18] public String toString(){ return "Person[name="+name+",age="+age+"]";//person = Person[name=Steven,age=18] } }
1.垃圾回收机制
finalize[ˈfaɪnəlaɪz] //完成,使结束 类似OC dealloc
垃圾回收器( Garbage Collection),也叫GC,垃圾回收器主要有以下特点
◆当对象不再被程序使用时,垃圾回收器将会将其回收
◆垃圾回收是在后台运行的,我们无法命令垃圾回收器马上回收资源,但是我们可以告诉他,尽快回收资源(System.gc和 Runtime.getRuntime().gc())
◆垃圾回收器在回收某个对象的时候,首先会调用该对象的 finalize方法
◆GC主要针对堆内存
◆单例模式的缺点
finalize方法什么时候调用
1.finalize方法每一个JaVa对象都部有
2. finalize方法不需要程序员去调用,有系统自动调用
3.Java对象如果没有更多的引用指向它,则该Java对象称为垃圾数据等待垃圾回收器回收,垃圾回收器在回收这个Java对象之前会自动调用该对象的finalize方法
@Override protected void finalize() throws Throwable { super.finalize(); }
People people = new People(); //没有引用再指向他,等待回收 people = null; //开发者只能"建议"垃圾回收器回收垃圾 System.gc(); class People { protected void finalize() throws Throwable { System.out.println(this + "马上就要被回收了 ~!");//People@18317cb3马上就要被回收了 ~! People p = this;//让引用再次指向该对象,该对象不是垃圾数据,不会被垃圾回收器回收! } }
2.类与类和接口之间的关系
①.类与类的继承关系
public class Animal { } class Dog extends Animal{//Dog is a Animal }
②类与接口之间的实现关系
public interface I { public void method01(); } // is - like - a 类与接口之间的关系: 实现 class A implements I {//A is like I public void method01() { //实现 } }
③类与类之间的关联关系
//类与类之间的关联关系: public class B {//B has a c private C c; } class C{ }
包:
包其实就是目录,特别是项目比较大,java文件特别多的情况下,我们应该分目录管理,在Java中称为分包管理,包名通常采用小写
1.包最好采用小写字母
2.包的命名有规则,不能重复
//package 必须放到 所有语句的第一行,注释除外。
软件的包机制
1.解决的类的命名冲突问题,在类名前加命名空间(包机制)
2.在Java中使用package语句定义包。(单包,复包)
3.package语句只能出现在.java源文件的第一行
4.package定义的格式,通常使用公司域名倒序输出方式
顶级域名:tanzhouedu.com
一级域名:www.tanzhouedu.com
二级域名:soft.tanzhouedu.com
三级域名:java.soft.tanzhouedu.com
XX级域名:xx...
二级目录:tanzhouedu.com/java
com(企业公司).tz(公司名).until(业务模块名称)
package定义格式:公司域名倒序.项目名.模块名
5.完整的命名是带有包名的
package com.tz,javase.pak.package_import;
6.带有包结构的如何运行程序
java com.tz.javase.pak.Student
类装载器 后面跟 类名
javac Java的编译器后边跟路径
import java.util.Date;
public class Config {
public static void main(String[] args) {
java.util.Date d = new java.util.Date();
System.out.println("日期:"+d);
}
}
7.
import com.tz.javase.pak.*;//导入pak里边的所有类
import语句只能出现在package语句之下,class定义之上
8.JDK常用包
java.lang ,此包Java 语言标准包,使用此包中的内容无需import导入
java.sql提供了JDBC接口类
java.util提供了常用工具类
java.io,提供了各种输入输出流
java访问级别修饰符
private protected public 限定其他类对该类、属性和方法的使用权限
private 只能在本类中访问
缺省: 本类,在同一个包下可以访问,其他不行
protected:本类,同一个包下,子类都可以访问,不同包,不行;
public :任何位置都可以
转载于:https://www.cnblogs.com/StevenHuSir/p/Java_Finalize_GC.html