基础

开发JAVA程序的步骤

jdk->jre->源程序编写->编译->执行目标文件

语法

 

变量、数据类型和运算符

 

常用数据类型

Byte(1字节=8bite,0),short(2,0)int(4,0),long(8,0)

Float(4,0.0f,(符号位+指数位+小数部分)),double(8,0.0d)(小数默认是double型)

Char(2,16进制表示,uniocde编码),String(类)

Boolean(1)(false默认值)

String a=”12”;

Integer num

 

\r回车 \n回车换行 \t空格(指定了占八个空格)

一个汉字字符占2个字节,一个英文字符占一个字节

 

测试程序:

System.out.println(“... \t...”);//我欠额为

System.out.println(“\t...\t”);//yi;.... Yi

修饰符

修饰符

本类

不同包的子孙类子孙类

同包的子孙类

同一包

其它包

public

protected

×

默认

×

×

private

×

×

×

×

static方法传进去的变量只能是static变量,里面的变量可以是普通变量  

static方法中不能使用this方式比如:

public class ss{ow

   public void show(){}

 

public static void main(String []args){

this.show();

}

}

public class Demo {

 

public static String ll  = "";

public int age;

public void show(){

     ll = 11+"";

System.out.println(ll);

} //普通方法中能使用静态变量

// public void getName(){

//  static int uu;

//  

// }//普通方法中不能声明静态变量

public static void getAge(){

System.out.println(age);

}静态方法中能使用普通变量

public static void main(String[] args){

Demo.ll = " ll";

System.out.println( Demo.ll);

 

}

}

static 和final的区别在于static 是作用域控制符,final是变量、类内容控制符

static代码块在类进行第一次实例化的时候就会加载运行,以后再次进行初始化类时不再运行。

非静态代码块在静态代码块后面执行,每次创建新对象的时候都会运行一次。

构造器在静态代码块后面运行

final(终态)

final类

不希望某个类被继承时用final,比如

public final class ff{

}同时,final类只能实例化一次

为什么要使用内部类?

当一个事物和另一个事物内外相通时,可以使用内部类,以保证内外相通。

1,在类里面定义类

2.在类外面定义类(同一个类里)

 

final方法 

final方法不能被重写

比如final String name(String name){

return name;

}

final常量

基本数据类型和类类型不可变,但如果装的是容器类型,就可以变了

字符串

String

charAt()是找出字符串中指定索引位置的字符

indexof()是找出字符串中指定字符的索引位置

subString() 截取指定位置

 

String.getBoolean之前先要用setProperty(String,value(String));问题,如果里面的value值不是true/false

 

==比较的是两端的地址是否相同,equals比较的是引用对象里面的内容。

String s1=”monday”;

String s2=”monday”;

System.out.println(s1==s2);

上述程序输出结果是true,说明s1和s2引用的是同一个对象”monday”

String a="a";和String b="a";的地址是相同的。两个都是在堆区,栈区引用了地址。

String c=new String("a"); String d = new String("a");的地址是不一样的。俩个都在堆区

 

0-9的字符减48得到ASCALL

 

Integer.parseInt(String) 字符串中数字化为int

Boolean.parseBoolean(String)

 

a.spilt(String ob):String[]

从String  a中找到ob,如果有ob就拆字符串,如果没有就不拆字符串。

(、{、【、^、-、**】})、?、+、*、、.15个字符属于特殊字符,转义需要用\\。

 

trim()返回的是去掉字符串前后空格的副本。

StringBuffer

4个构造函数

StringBuffer()

StringBuffer(String)

StringBuffer(CharSequence ch)

StringBuffer(int long)

switch

Switch(conditions){

Case 值1:

   Default:

当某个值等于case中的值时,就会一直执行下面的语句。知道遇到break为止。

 

异常

throw/手动抛出异常

throws自动抛出异常

Finally块

1,try里面有return语句不会影响finally块的执行

2,finally块里面的return会覆盖try里面的return

3,try里面的变量b,return b;然后在finally中对finally执行,返回的依然是try块里面的b。但b已经改变了。

 

javaError和Exception区别

Error类和Exception类都继承自Throwable类。s

Error的继承关系:

基础

 

Exception的继承关系:

 基础

 

二者的不同之处:

Exception:

1.可以是可被控制(checked) 或不可控制的(unchecked)。

2.表示一个由程序员导致的错误。

3.应该在应用程序级被处理。

Error:

1.总是不可控制的(unchecked)。

2.经常用来用于表示系统错误或低层资源的错误。

3.如何可能的话,应该在系统级被捕捉。

Java 中定义了两类异常:

1) Checked exception: 这类异常都是Exception的子类 。异常的向上抛出机制进行处理,假如子类可能产生A异常,那么在父类中也必须throws A异常。可能导致的问题:代码效率低,耦合度过高。

2) Unchecked exception: 这类异常都是RuntimeException的子类,虽然RuntimeException同样也是Exception的子类,但是它们是非凡的,它们 不能通过client code来试图解决,所以称为Unchecked exception 。

Java 中异常类的继承关系图:

基础

 

本地方法

在定义一个native method时,并不提供实现体(有些像定义一个java interface),因为其实现体是由非java语言在外面实现的。

public class BeautifyChild extends Beautify implements NativeTest{

public void name() {

}

native public void getname();

native void getname1();

native public void Native1( int x ) ;

native static public long Native2() ;

native synchronized private float Native3( Object o ) ;

native void Native4( int[] ary ) throws Exception ;

}

常用Math类方法

random();产生0<=x ,x>1的随机数。

round(x);计算x的四舍五入整数

sqrt(x)计算x的平方根

pow(底数,指数)

 

注解

@override表示方法重写

@deprecated表示方法弃用

@SuppressWarnings表示被批注的代码段

                                    不再提示警告

使用Ctrl+/进行多行注释

使用/**/段落注释可以注释方法,变量意思

 

JVM

栈内存:

       调用方法时在方法中声明的变量(基本类型)

         

堆内存:

      一般放的是new出来的对象(引用类型)

方法区:

      一般放的是加载类的信息

       静态变量,常量

本地方法栈

程序计数器

基础

 

反射机制

object.getClass()返回的值是一个字符串,它的内容是"class"+"  "+包+"."+类名

System.out.println(Class.class.getClass().getResource("/").getPath());//获得当前文件路径

Class类—可获取类和类的成员信息

//Class.forName()得到对象

Class clazz=Class.forName("java.lang.String");

Field类—可访问类的属性

Method类—可调用类的方法

Constructor类—可调用类的构造方法

//获取对象的结构信息

Field fields[ ] = clazz.getDeclaredFields();

Method methods[] = clazz.getDeclaredMethods();

Constructor constructors[ ] = clazz.getDeclaredConstructors();

 

接口

接口中的变量没有声明类型的默认是静态常量。//声明了变量类型的也是静态常量。

modify是private会报错

即所有变量都是全局静态常量。

所有的方法都是全局抽象方法。

线程

notify()方法是唤醒一个等待的线程

进程

public static void main(String[] args) {    openWinExe();    openExe();   }   //用Java调用windows系统的exe文件,比如notepad,calc之类   public static void openWinExe() {    Runtime rn = Runtime.getRuntime();    Process p = null;    try {    String command = "notepad";    p = rn.exec(command);    } catch (Exception e) {    System.out.println("Error win exec!");    }   }   //调用其他的可执行文件,例如:自己制作的exe,或是下载安装的软件.   public static void openExe() {    Runtime rn = Runtime.getRuntime();    Process p = null;    try {    p = rn.exec("\"D:/QQ2010.exe\"");    } catch (Exception e) {    System.out.println("Error exec!");    }   }

 

执行bat文件

 

集合

 

 

set、list、map都是接口

 

instanceof语句用法  object instanceof class 。判断object是不是class的子类对象。返回true/false