package com.swift; //使用无参构造方法自动生成对象,序号不断自增 public class Person { private static int count; //如果在定义类时,使用的是静态的属性,则得到的结果是不同的.count生命周期长,与类相同 public int id; public String name; public int age; public String city; public Person() { super(); count++; this.…
做自己的类加载器 虚拟机的核心是通过类加载器来加载.class文件,然后进行相应的解析执行.那么我们可以自己做类加载器,手动加载需要的.class以进行解析执行,从而扩展虚拟机的功能. 以下内容摘自API文档: 应用程序需要实现 ClassLoader 的子类,以扩展 Java 虚拟机动态加载类的方式. 网络类加载器子类必须定义方法 findClass 和 loadClassData,以实现从网络加载类.下载组成该类的字节后,它应该使用方法 defineClass 来创建类实例. 代码示例: 自…
静态代码块?类加载就执行,最先执行 class demo{ static int num; static{ num=10; num*=3; System.out.println("haha"); } static void show(){ System.out.println("num="+num); } } 空参构造自动生成对象时,使用非静态的属性 代码: package com.swift; //使用无参构造方法自动生成对象,序号不断自增 public clas…
说明: 因为上个代码,总是要输入完整的绝对路径,比较麻烦,于是,就写了这个小程序,直接进入文件对话框选择需要运行的class文件. 只需要提前输入完整的类名. 注意:加的MyTest必须打个包,加上: import cn.hncu.myJuniitApp.vo.MyTest; 不然不是同一个注解呢. 测试的类: package cn.hncu.myJuniitApp; import cn.hncu.myJuniitApp.vo.MyTest; public class MyJunitTest {…
转自:http://blog.csdn.net/mrzhoug/article/details/51581994 一.在Java中,使用”{}”括起来的代码称为代码块,代码块可以分为以下四种: 1.普通代码块:就是类中方法的方法体   public void xxx(){       //code   } 2.构造块:用{}裹起来的代码片段,构造块在创建对象时会被调用,每次创建对象时都会被调用,并且优先于类构造函数执行. 构造块中定义的变量是局部变量.  {      //code   } 3.…
判空灾难 ​ 作为搬砖党的一族们,我们对判空一定再熟悉不过了,不要跟我说你很少进行判空,除非你喜欢NullPointerException. 不过NullPointerException对于很多猿们来说,也是Exception家族中最亲近的一员了. ​ 为了避免NullPointerException来找我们,我们经常会进行如下操作. if (data != null) {     do sth. } 如果一个类中多次使用某个对象,那你可能要一顿操作,so: ​ “世界第九大奇迹”就这样诞生了.…
从字节码看java中 this 隐式传参具体体现(和python中的self如出一辙,但是比python中藏得更深),也发现了 static 与 非 static 方法的区别所在! static与非static方法都是存储java的方法区.在static 方法中,没有this引用,因此无法使用当前类中所定义的变量,而非static方法则会默认传入this.我们今天就从另一个角度来真实看一下这个答案吧! 来个例子,并将其反编译为可视代码: public class Hello { private…
Java中,使用Final修饰一个变量,是引用不能变,还是引用对象不能变? 是引用对象的地址不能变,引用变量所指的对象的内容可以改变. final变量永远指向这个对象,是一个常量指针,而不是指向常量的指针. 比如: final StringBuffer sb=new StringBuffer("abc"); 对sb重新赋值 sb=new StringBuffer("cde"); 会出现编译错误,被final修饰的变量是不能重新赋值的: 但是 sb.append(&q…
在java中一个类要当作线程来使用有两种方法. 1.继承Thread类,并重写run函数 2.实现Runnable接口,并重写run函数 因为java是单继承的,在某些情况下一个类可能已经继承了某个父类,这时在用继承Thread类方法来创建线程显然不可能java设计者们提供了另外一个方式创建线程,就是通过实现Runnable接口来创建线程. /** * 演示如何通过继承Thread来开发线程 */ public class Thread01 { public static void main(S…
package com.hxzy.IOSer; import java.io.File;import java.io.IOException; public class Demo03 { public static void main(String[] args)throws Exception{ Gu_1(); Gu_2(); } /* * 2.File对象调用file.mkdirs() * 可以创建多层文件夹 * 这个方法是创建文件夹的 返回的同样是布尔值 * 同样需要File类的构造方法…