对于初学者来说,java入门确实不太容易,尤其是java的配置比起C或C++来说要复杂的多。本人建议初学者可以去到网上去下载一些视频来看学习,我当时就是看尚学堂马士兵的视频学习java SE的,讲的很详细,比起大学里的一些老师来说要好得多了。(这绝对不是做广告,是我自己的亲身体会)
话不多说,下面就是我通过视频学习时做的一些笔记,供大家参考一下。
一,遇到问题的解决办法步骤:
1,查文档,做实验。
2,Google
1,关键词的选择
1),由精细到粗化
2,略读页面介绍,分析可能性
1),超过5页没找到,不要往后翻。
3,先中文,后英文。
3,论坛
1),问题问清楚
2),www.csdn.net
3),国外的论坛
基础知识
1,打开命令提示符的方式有两种:1,开始\程序\附件\命令提示符;2,开始\运行\输入cmd后,按Enter键。
2,java是解释型语言。java虚拟机能实现一次编译多次运行。
3,JDK(java software Development kit 软件开发包),JRE(java Runtime Environment java运行环境)。
4,javac编译java程序,java运行java程序。
5,经过编译运行之后会形成三个文件.java、.class和.bak文件。bak文件是UltraEdit备份的一个文件。可以在UltraEdidt中进行设置,选择“高级\配置\文件处理\备份”,选择"不备份".
6,一个文件最多有一个public class。
7.java中switch语句只能探测int类型值。
T1,(T表示后面添加的内容)在java中一个字节是八位,一个字符占两个字节(16位unicode字符串)。
T2,内存中int占4个字节,long类型占8个字节;float占4个字节,double占8个字节;boolean类型占1个字节;
T3,java不提供运算符的重载。
类和对象
8,在static方法中不能访问非static的成员。static方法是指在函数前面加上static限定符,如:public staticvooid main();public static void print(); 例子:视频第三章第19节。
9,约定俗成的给package取名时把自己公司的域名倒过来,后面再跟上项目名。如:com.bjsxt.java140。
10,如果你要把一个类放在包里面,第一句话写package,编译出来的类必须位于正确的目录下面。如:package com.bjsxt.java140;依次的目录是com\bjsxt\java140也就是一层层的子文件夹。编译出来的class文件必须位于正确的子目录下。如果你想在第二个类里面应用这一个类必须把名字给写全了,如:com.bjsxt.java140.Cat c = new com.bjsxt.java140.Cat();
11,还有一个简写是用import引入这个类。如 a,import com.bjsxt.java140.Cat;表示引入Cat这一个类;
b,import com.bjsxt.java140.Cat.*;表示引入这一个包里的所有类。 一下三种用法都是正确的:
(1)
import com.bjsxt.java140.*;
public class Dog {
public static void main(String args[]) {
Cat c = new Cat();
c.print();
}
}
(2)
import com.bjsxt.java140.Cat;
public class Dog {
public static void main(String args[]) {
Cat c = new Cat();
c.print();
}
}
(3)
public class Dog {
public static void main(String args[]) {
//com.bjsxt.java140.Cat c = new com.bjsxt.java140.Cat();
Cat c = new Cat();
c.print();
}
}
12,必须class文件的最上层包的文件目录位于classpath路径(设计环境变量)下。 在执行的时候也要把包名给写全了,即执行一个类需要写全包名
13,java.lang的包在引用时不需要写上包名,除了lang这个包之外的所有包里的类在引用时必须写入包名。
14,jar的路径:C:\jdk\jre\lib\rt
15,打成jar包的方法:
1,打开命令提示符,定位到包的根目录的上一层目录,如E:\java\package>
2,然后再输入-cvf,
3,再输入jar名,如test.jar ,
4,再输入*。*后按Enter建。如: E:\java\package> -cvf test.jar *.*
16,默认的访问权限是default。
继承
17,(1)、(函数)重写(overwrite)要注意的机几点:
1),重写方法(函数)必须和被重写方法具有相同的方法名称、参数列表和返回类型;
2),重写的时候要从父类的函数声明中拷贝函数的声明(即函数名设参数的类型和个数)。
3),重写方法不能使用比被重写方法跟严格的访问权限。(为避免名称出错,重写时必须从基类中copy函数的声明)
(2)、super关键字指向当前类的父类。
(3)、构造方法:a,子类的构造的过程必须调用其基类的构造方法;b,子类可以在自己的构造方法中使用super(argument_list参数列表)调用基类的构造方法;即使用this(argument_list_)调用本类的另外的构造方法,如果调用super,必须写在子类构造方法的第一行。 c,如果子类的构造方法中没有显示地调用基类的构造方法,则系统默认调用基类无参数的构造方法; d,如果子类的构造方法中没有显示地调用基类的构造方法,而基类中又没有无参数的构造方法,则编译出错。
(4),object类是java所有类的根基类,如果在类的声明中未使用extends指明其基类,则默认为object类。
(5),对象转型:a,一个基类的引用类型对象可以“指向”其子类的对象;b,一个基类的引用的不可以访问子类对象新增加的成员(属性和方法);c,可以使用引用变量instanceof类名来判断该引用变量所“指向”的对象该类或该类的子类;d,子类的对象可以当作基类的对象来使用称作向上转型(upcasting),反之称为向下转型(downcasting)。
(6),动态绑定是指在“执行”期间(而非在编译期间)判定所引用对象的实际类型,根据实际的类型调用相应的方法。
要符合的条件:a,要有继承;b,要有重写;c,父类引用指向子类对象。
(7),抽象类;
a,用abstract关键字来修饰一个类时,这个类叫做抽象类;用abstract来修饰一个方法时,这个方法叫做抽象方法;
b,含有抽象方法的类必须被声明为抽象类,抽象类必须被继承,抽象方法必须被重写;
c,抽象类不能被实例化;
d,抽象方法只需声明,而不需实现。
(8),final关键字(类似于C++中的const)
a,final的变量的值不能被改变;1),final的成员变量; 2)final的局部变量;
b,final的方法不能被重写;
c,final的类不能被继承。
接口
18,接口(interface)是抽象方法和常量值的定义的集合;从本质上讲,接口是一种特殊的抽象类,这种抽象类包含常量和方法的定义,而没有变量和方法的定义。
19,接口特性:
(1),接口可以多重实现;
(2),接口中声明的属性默认为public static final的;也只能是public static final的;
(3),接口只能定义抽象方法,而且这些方法默认为public的,也只能是public的;
(4),接口可以继承其他的接口,并添加新的属性和抽象方法。
20,接口和接口之间可以继承,类和类之间可以 继承,但是类和接口之间只能通过类来实现接口。
异常处理
21,异常的分类(图)
throwable error 无法处理
exception 其他类型 必须处理
RuntimeExcption 可以处理也可以不处理,视情况而定。
22,异常处理通常的结构是:try{...} catch{...} finally{...}//不管try块中是否抛出异常,finally中的语句必须被执行。
24,异常与重写的关系:重写方法需要抛出与原方法所抛出类型一致的异常,或不抛出异常。
25,总结:1,一个图(分类);2,五个关键字:try,catch,finally,throw,throws;3,先逮小的,再逮大的;4,异常与重写的关系。
数组
26,一维数组的形式:(1), int a[]; a = new int[5]; 等同于 int a[] = new int[5];
(2), int[] a; a = new int[5]; 等同于 int[] a = new int[5];
27,二维数组:int a[][] = {{1,2}, {3,4,5,6}, {7,8,9}};二维数组可看成以数组为元素的数组。
java中多维数组的声明和初始化应按从高维到低维的顺序进行,如: