Java 复习

Java中的变量主要有以下几种:
1、局部变量
(局部变量的声明和初始化都是在方法中,方法结束后,变量就会自动销毁)
(访问修饰符不能作用于局部变量) 
(局部变量存在与方法、构造方法、语句块中,执行完后会被销毁)
(局部变量没有默认值,必须经过初始化才能使用)
(局部变量存储在栈中)
2、类变量(静态变量)(static修饰的【类】变量)
(静态域)
(成员变量有默认值:数值型为0;布尔型为false;引用类型为null)
3、成员变量(非静态变量)
(存储在堆中的对象里面)
(成员变量有默认值:数值型为0;布尔型为false;引用类型为null)
(成员变量可以在声明时指定,也可以在构造方法中指定)

访问修饰符:public、 default、 protected、 private

创建对象:声明、实例化、初始化

源文件如果有package语句,那么package语句应该在源文件的第一行
package语句
import语句

先使用javac命令编译java文件,然后使用java命令运行字节码文件。如: javac Test.java ; java Test

如果java类没有显示声明构造器,那么这个java类会拥有一个默认无参构造器;如果java类中显示声明了构造器,那么默认的无参构造器消失。

native 表示用非java代码实现

八种基本数据类型:byte short int long float double boolean char
(Byte.SIZE Byte.MIN_VALUE Byte.MAX_VALUE Character.SIZE Character.MAX_VALUE Character.MIN_VALUE)

引用类型:
1、引用类型变量一旦声明后就不能再改变了。
2、对象和数组都是引用类型
3、引用类型变量的默认值都是null

Java常量:
1、final double PI = 3.1415926
2、const 和 final 用法类似,不常用

Java支持的转义字符:
1、 \n \t \" \' \\

Java 内存分配:
1、堆(存放new出来的对象及它的成员变量、数组)(在堆上new一个新的对象或创建一个数组后,还会在相应的栈上存储该对象或数组的引用)
(堆上的数组或对象对应的代码块执行完后,不会被释放。只有当对象或数组没有被引用时,才变为垃圾,需要在不确定的时间后被垃圾回收期收走)
(堆中存放new出来的对象 + 数组)
2、栈(执行方法时会在栈上分配一块区域)
(方法中的引用变量在栈上分配内存,在堆上生成相应的对象或数组)
(栈中存放基本数据类型的局部变量数据 + 对象的引用,不会存放变量的内容)
3、常量池(存放常量)
4、静态区(存放对象中用static修饰的静态成员)
5、寄存器(我们在程序中无法控制)
6、参考网址:http://www.cnblogs.com/wangcp-2014/p/5657568.html

final:
1、final修饰的引用变量 只会导致引用变量的值不改变,但引用变量指向的对象的内容可以改变。

String :
1、不可变

DateFormat:
import java.util.*;
import java.text.*;
Date now = new Date();
DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(format.format(now));

StringBuffer和StringBuilder比较:
1、都能够对字符串进行修改,而不会产生多余的字符串
2、StringBuilder不是线程安全的,效率上会快一些;StringBuffer是线程安全的,效率上会慢一些。

正则表达式匹配:
1、使用Pattern类和Matcher类
2、示例
String line = "good 122 str .. 2828282 good str";
String pattern = "(.*)(\d+)";
Pattern p = Pattern.compile(pattern);
Matcher m = r.matcher(line);
if(m.find()) {
System.out.println("" + m.group(0));
System.out.println("" + m.group(1));
} else {
System.out.println("no matcher");
}

异常类:NullPointerException、ArrayIndexOutOfBoundsException、ArithmeticException


class InnerClass implements One {
static {
System.out.println("InnerClass load ......");
}

public InnerClass() {
System.out.println("调用了调用了掉无参wucan调用了掉无参无参gouzao");
}

public InnerClass(Integer a) {
System.out.println(a);

}

public Integer count = 26;
public static String temp = "ookkk";

public static void kan(Integer a, String kkk) {
System.out.println(kkk);
}

protected Integer compute() {
return 1;
}
}

interface One {
String a = "good";
}

Class:
1、代码示例
Class<boolean> c = boolean.class;
String name = c.getSimpleName();
System.out.println(name); // 输出"boolean"

//类反射
//java.lang.Class
Integer modifiersDesInt = c.getModifiers();
System.out.println(modifiersDesInt);
Class superClass = c.getSuperClass();
System.out.println(superClass.getSimpleName());
Class[] interfaces = c.getInterfaces(); //返回所有实现的接口的Class对象
System.out.println(interfaces[0].getSimpleName());

/*
* 两种 declared
*/
//字段反射
//java.lang.reflect.Field
Field[] allFields = c.getFields(); //返回所有的变量(成员变量+类变量)(自己声明的+父类声明的)
Field field = c.getField("temp");
Field[] someFields = c.getDeclaredFields(); //返回所有自己声明的变量
Field otherField = c.getDeclaredField("temp");

//方法反射
//java.lang.reflect.Method
Method[] methods = c.getMethods();
for(Method method : methods) {
System.out.println(method.getName());
System.out.println(method.getModifiers());
Parameter[] params = method.getParameters();
for(Parameter param : params) {
System.out.println(param.getName());
System.out.println(param.getType().getSimpleName()); //获取的type仍为 Class 对象
}
}

/*
* 两种 declared
*/
//构造方法反射
//构造函数不能继承
//java.lang.reflect.Constructor
Constructor[] constructors = c.getConstructors(); //获取所有的构造函数(自己的+父类的)
constructors = c.getDeclaredConstructors();    //获取自己声明的构造函数
for(Constructor constructor : constructors) {
System.out.println(constructor.getName());
Parameter[] params = constructor.getParameters();
for(Parameter param : params) {
System.out.println(param.getName());
System.out.println(param.getType().getSimpleName());
System.out.println();
}
}

//使用反射动态创建类的对象
Class<InnerClass> c = InnerClass.class;
try {
InnerClass temp = c.newInstance();
} catch (Exception e) {
e.printStackTrace();
}
//使用类对象创建示例对象(构造函数)
Class<InnerClass> c = InnerClass.class;
try {
Constructor<InnerClass> cons = c.getConstructor(int.class);
InnerClass temp = cons.newInstance(26);
} catch (Exception e) {
e.printStackTrace();
}

//使用反射调用方法
try {
Class<InnerClass> c = InnerClass.class;
Method kan = c.getMethod("kan", Integer.class, String.class);
kan.invoke(c, 26, "good");
} catch (Exception e) {
e.printStackTrace();
}

复习:
1、enum用法;

 


Java:https://www.w3cschool.cn/java/java-variable-types.html

posted @ 2017-07-07 14:56  窗外是绿色的  阅读(200)  评论(0编辑  收藏  举报