java基础学习日志07
2017-12-26 13:57
260 查看
今天小冷,但阳光依旧
今天学的是类的生命周期和main的调用
生命周期这词用得好啊,还有垃圾清理。静态就是在堆中开辟出一块独立的存储空间,单独调用
反射机制,后面会学,关于加载,初始化,实例的顺序,目前只要会new就好
今天学的是类的生命周期和main的调用
public class ClassAndMathodDemo { // 成员变量,也叫全局变量,包括静态成员变量以及非静态成员变量 int age; String name; // 静态变量 static String schoolName; // 代码段就是用{}包围的代码,从作用域划分分为两种,一种是全局代码段,一种是局部代码段 // 全局代码段,在类里面,方法体外面的叫全局代码段,课划分为两种,一种静态全局代码段,一种非静态全局代码段 { System.out.println("age value is"+age); } static{ System.out.println("schoolName vlaue is"+schoolName); } // 方法也主要分为两种,一种是静态方法,一种是非静态方法 public static void run(){ System.out.println("this is runing"); } public void sleep(){ System.out.println("this is sleeping"); } }
生命周期这词用得好啊,还有垃圾清理。静态就是在堆中开辟出一块独立的存储空间,单独调用
/** * 这个类主要是演示类的生命周期中的准备阶段和初始化阶段 * @author jh *在java中,静态的成员变量和方法可以直接通过类名来调用 */ /* * 用class修饰的,叫类,一个java文件中可以有多个类, * 但是只能有一个public,而且用public修饰的类名要和文件名保持一致, * 一个java文件中可以有多个类,通过javac编译后会有对应个数的class文件 */ class StaticCode { private static int a = 1; //静态成员变量 static { System.out.println("StaticCode is loading"); // 只执行一次 } public static void show() { a++; System.out.println("a = " + a); } } public class SampleStaticInit { public static void main(String[] args) { StaticCode.show(); StaticCode.show(); StaticCode.show(); } }类,在我眼中就是集合,类的元素就是集合元素,加载就和人脑写读记忆差不多,初始化和实例化就是定义和参照物
/** * 该类主要是介绍类的加载,初始化,实例化的顺序 * 首先是加载,在加载阶段会给静态成员(变量,方法)分配内存空间,并赋予默认值 * 然后在初始化阶段给静态成员赋予正确的初始值,在初始化后,就可以直接通过类名来调用静态的成员 * 最后是实例化,实例化是给非静态的成员开辟内存空间,赋予相应的默认值。 * 实例化过程(重点):1.在堆中为实例变量分配内存空间。 * 2.调用类中所有的实例代码块。{……} * 3.调用相应的构造方法。 * 实例后就可以直接通过对象名直接调用静态和非静态的成员 * @author ah * */ public class StudentDemo { // 静态成员在加载时就分配内存,并赋予默认值,(默认值,如果是数字类型都是0或0.0;char是'',boolean 是false, // 其他类型同一是 null). // 静态成员在初始化阶段会赋予正确的默认值,比如schoolName在加载阶段的默认值是null, // 在初始化阶段,才会将"郑大"赋给scoolName; static String schoolName ="郑大"; static int number; static boolean isman; // 非静态成员是在实例化阶段开辟控制并赋值(在实例时,如果非静态成员没值则赋予默认值) int age; String name="tom"; // 静态代码段会在初始化阶段执行 static{ System.out.println(number); System.out.println("schoolName is "+schoolName); } // 非静态代码段会在实例化阶段执行 { System.out.println("this is code"); } // 构造方法会在实例化阶段最后执行 public StudentDemo() { // TODO Auto-generated constructor stub System.out.println("这是studentDemo的构造方法"); } public void run(){ System.out.println("this is runing"); } }
反射机制,后面会学,关于加载,初始化,实例的顺序,目前只要会new就好
import com.hisoft.exercise_daily.test1; public class InstanceDemo { public static void main(String[] args) { // 实例化的第一种方式,加载、初始化、实例化三个操作都会执行 StudentDemo stu = new StudentDemo(); stu.run(); texi1.main("2"); // 实例化的第二种方式,通过java的反射机制进行 // try { //// 通过反射机制中Class的forName进行加载,和初始化 // Class c = Class.forName("com.hisoft.java.cycle.StudentDemo"); // //通过Class类里面的newInstance()方法来进行实例化 // StudentDemo stu1 = (StudentDemo) c.newInstance(); // stu1.run(); // } catch (Exception e) { // // TODO Auto-generated catch block // e.printStackTrace(); // } // 实例化的第三种操作,首先通过ClassLoader类的loadClass方法加载 // try { //// 通过ClassLoader类的loadClass方法加载对应的类 // Class c=ClassLoader.getSystemClassLoader().loadClass("com.hisoft.java.cycle.StudentDemo"); //加载 //// 通过Class的newInstance();进行初始化和实例化 // StudentDemo stu2=(StudentDemo)c.newInstance(); // stu2.run(); // } catch (Exception e) { // // TODO Auto-generated catch block // e.printStackTrace(); // } } }
相关文章推荐
- 毕老师JAVA基础视频 学习日志——Java开发前奏
- 黑马程序员—学习java基础5日志
- 黑马程序员——黑马学习日志之四 Java基础——数组
- 黑马程序员—学习java基础10日志
- 黑马程序员——JAVA基础知识学习日志(一)
- java基础视频25days(毕老师)学习日志(day11、day12、day13)
- 黑马程序员 java基础 继承thread多线程学习日志
- 黑马程序员—学习java基础8日志
- 黑马程序员—学习java基础9日志
- Java基础学习总结(40)——Java程序员最常用的8个Java日志框架
- Java基础学习笔记【07】Collection、List、Map
- java基础2学习日志
- 黑马程序员 java基础 连接数据库学习日志
- 黑马程序员——java基础:异常学习日志
- java基础视频25days(毕老师)学习日志(day20、day21)
- 黑马程序员——黑马学习日志之三 Java基础03
- 黑马程序员 java基础 实现runnable接口问题 学习日志
- java基础视频25days(毕老师)学习日志(day07、day08、day09、day10)
- 黑马程序员--java基础 GUI画图学习日志
- java基础视频25days(毕老师)学习日志(day01、day02、day03)