一.HelloWorld
HelloWorld.java
public class HelloWorld{ public static void main(String args[]){ System.out.println("Java,你好!"); } }
public是类修饰,class是关键字 类,HelloWorld是类名。内部是一个main方法,是一个执行入口的方法,方法上的public也是修饰,表示公有,static是静态修饰关键字,void是方法返回值,标识返回空。main是方法名,特殊方法,表示执行入口,括号里的String args[]是方法参数,这里指字符串数组。
HelloWorld.java用javac编译成HelloWorld.class文件,再用java运行。注意类名要和文件名相同,都为HelloWorld。
二.基础语法
1.注释主要分3类
单行注释用// 多行注释用/* */(eclipse快捷键ctrl+shift+/) 文档注释(对类和方法加上注释) /** ..*/
2.标识符命名规则:数字,字母和下划线(_),美元符号($)组成。在Java中是区分大小写的,而且还要求首位不能是数字。最重要的是,Java关键字不能当作Java标识符。
3.数据类型
基本数据类型:整数类型(byte,short,int,long) ,浮点类型(float,double),布尔型(boolean)
引用数据类型:类(class),接口(interface),数组
注意:小数默认是double类型,所以我们必须加一个f,来表示float类型。求float数据类型的最小值:float minF=Float.MIN_VALUE。
三.面向对象
1.方法的值传递:在方法里改变变量的值,作用范围仅仅是方法里,对外面不影响。
引用传递:传递的是地址,对象里的属性在方法里值修改,对外面有影响,我们通过对象.属性,可以获取到最新的数据。
2.用对象调用普通的方法,用类名调用静态的方法,如果用对象调用静态的方法,会出现警告。
3.方法的重载只和参数的个数有关,和返回值的类型无关。
4.递归,就是程序调用自身,我们讲的是方法递归调用,也就是在方法里自己调用自己。
5.默认的构造方法,没有返回值类型,区别于其他一般方法。方法名和类名一样。
6.this关键字:表示当前对象。使用this调用本类中的属性,使用this调用构造方法。this()方法调用无参数的构造方法。
7.内部类:在类的内部定义的类;优点是可以方便的使用外部类的属性,缺点是破坏类的基本结构。
8.静态代码块:{}前加static修饰词,在类加载的时候执行,而且只执行一次,个人只见过写数据库连接代码时会用到。
9.(1)实例化String对象的2中方式
1. String name1="张三";
2. String name2=new String("李四");
(2)“==” vs “equals” 方法
“==”比较的是引用(是否指向同一个内存块)“equals”比较的是具内容
(3)String两种实例化方式的区别
直接赋值方式:创建的对象存放到字符串对象池里,假如存在的,就不会再创建
new对象方式:每次都创建一个新的对象
(4)字符串的内容不可变性
字符串的特性:不能改变字符串的内容;要想改变,只能通过指向一个新的内存地址
10.继承定义:子类只能继承父类的属性和方法,java只支持单继承,私有方法不能继承。
11.对象实例化 先实例化调用父类构造方法,再调用子类实例化构造方法。super()关键主要是调用父类方法或者属性。
12.final关键字:使用final声明的类不能被继承,使用final声明的方法不能被子类覆盖,使用final声明的变量不能被修改,即为常量。
final修饰字段的时候一般和static一起使用,来定义一些不可变的静态变量,方便程序使用。调用的话,直接类名.属性即可。
public static final String CHINA_CAPITAL="北京";
13.在java中,含有抽象方法的类称为抽象类,同样不能生成对象
注意:包含一个抽象方法的类是抽象类;抽象类和抽象方法都要由abstract关键字修饰;抽象方法只需要声明而不需要实现;抽象类必须被子类(假如不是抽象类)必须重写抽象类的全部抽象方法;抽象类不能被实例化。
14.接口:一种特殊的”抽象类“,没有普通方法,由全局变量和公共的抽象方法所组成。关键字:interface 实现多个接口,中间用逗号隔开,并且实现所有抽象方法。public class Test implements A,B{}
15.继承类和实现接口,先继承,后实现接口。public class Test extends C implements A,B{}
16.接口的继承,接口可以多继承。
17.java的多态性表现:方法的重载和重写;可以用父类的引用指向子类的具体实现而且可以随时更换为其他子类的具体实现。
18.对象的转型:向上转型:子类对象->父类对象 安全 向下转型:父类对象->子类对象 不安全
19.Object类是所有类的父类;常用方法:public String toString() 返回该对象的字符串表示;public boolean equals(Object obj) 指示其他某个对象是否与此对象“相等”
20.instanceof关键字:判断一个对象是否属于一个类;返回布尔类型。通过instanceof我们可以确保向下转型的不出问题。
21.匿名内部类指的是实例化内部对象,就是没有名字的内部类。
22.包装类,int-->Integer 我们可以用包装类的方法类进行类型转换。Integer.parseInt()常用
String a="3";
String b="5";
int m=Integer.valueOf(a); // 调用Integer类的valuesOf方法 把字符串类型转换成int类型
int n=Integer.valueOf(b);
23.设计模式
四.Java异常处理
1.在java中,我们用try-catch来捕获异常。Exception是异常类的老祖宗。finally里面的都会执行,但是try catch后面的代码未必会执行。
2.throws表示当前方法不处理异常,而是交给方法的调用出去处理。throw表示直接抛出一个异常。
3.Exception是检查型异常,在程序中必须使用try...catch进行处理;RuntimeException是非检查型异常,例如NumberFormatException,可以不使用try...catch进行处理,
但是如果产生异常,则异常将由JVM进行处理;RuntimeException最好也用try...catch捕获;
4.自定义异常要继承自Exception.
五.Java常用类
1.java常用类,java日期处理类。Date类是jdk给我们提供的标准日期类,在java.util包下。
2.SimpleDateFormat类主要是用作日期类型转换用的,在java.text包下
3.Calendar是日历类,也是java.util包下的,功能比较强大,能获取到年月日时分秒的具体值
六.Java泛型
1.使用泛型可以指代任意对象类型
2.限制泛型,通配符泛型,泛型方法。
七.反射
八.集合
1.Connection接口是集合的老祖宗,定义了接口的基本方法。
2.List集合是Connection接口的子接口,也是最常用的接口,此接口对Connection接口进行了大量的扩展,List集合里的元素是可以重复的。
3.List接口的主要实现类有ArrayList,和LinkedList。在数据量不大的情况下,这两个类性能差别不大,一般情况下,集合里的元素很少变化的,一般用ArrayList,假如集合里元素经常变动,要用LinkedList;底层实现有差别的。
ArrayList arrayList= new ArrayList(); arrayList.add("张三");
LinkedList linkedList= new LinkedList(); linkedList.add( "张三");
4.集合的遍历Iterator,foreach http://blog.java1234.com/blog/articles/226.html
5.Set集合是Connection接口的子接口,没有对Connection接口进行扩展,里面不允许存在重复的内容。
HashSet hs= new HashSet(); hs.add("21221");
6.Map集合,是存放一对值的最大接口,即接口中的每一个元素都是一对,以key->value键值对的形式保存,Map的常用实现类HashMap
HashMap hashMap= new HashMap(); hashMap.put("1号", new Student("张三",10));
九.Java多线程
1,同时对多项任务加以控制。
2.继承Thread类public class Thread1 extends Thread;实现Runnable接口public class Thread2 implements Runnable;多线程实现数据共享public synchronized void run()。
3.多线程的状态:创建状态,就绪状态,运行状态;阻塞状态,死亡状态。
4.常用方法:
getName(); 返回该线程的名称。
currentThread();返回对当前正在执行的线程对象的引用。
isAlive();测试线程是否处于活动状态。
sleep();线程休眠。
setPriority(int newPriority);更改线程的优先级。
yield();暂停当前正在执行的线程对象,并执行其他线程。
十.IO流
1.流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。
2.根据处理数据类型的不同分为:字符流和字节流;根据数据流向的不同分为输入流和输出流。
3.字符流:Reader,Writer 字节流:InputStream OutputStream
4.InputStream是输入流 OutputStream是输出流;InputStream输入流可以把文件从硬盘读取到内存;OutputStream输出流可以把文件从内存写入到硬盘;我们实际使用的都是InputStream和OutputStream的子类;比如文件操作方面用的是FileInputStream和FileOutputStream;
5.BufferedInputStream和BufferedOutputStream
带缓冲的输入和输出流;这里缓冲的概念,就是在A,B之间建立内存缓冲区,读取得快,就先放缓冲区,然后再从缓冲区写入指定目标,和没有缓冲比,效率快很多。
6.Reader和Writer.主要用于文本的读取和写入,一般使用的实现类是FileReader和FileWriter;
十一.debug断点调试
eclipse 里debug调试主要三个快捷方式
F6 单步执行 执行到下一行代码
F8是执行完 假如后面还有断点 执行到下一个断点处
F5是进入方法里执行
当我们需要查看某个表达式的时候,可以用ctrl+shift+i快捷方式;
varialbes变量视图,可以修改所有变量以及值;