0. 引言
在网上下载到一份很详细的文档,是某人的笔记,写得很是用心啊。
java的内容很多,怎么复习呢?看别人的笔记,效率会不会高一些?
考虑到绝大多数是从别人的笔记上摘下来的,所以我就把文章类型选成转载了。
金子这东西,只这一点点,就可以使黑的变成白的,丑的变成美的,错的变成对的,
卑贱变成高贵,老人变成少年,懦夫变成勇士。它可以使受诅咒的人得福,
使害着灰白色癫病的人为众人所敬爱,它可以使窃贼得到高爵显位,
和元老们分庭抗礼,它可以使鸡皮黄脸的寡妇重做新娘。
—— William Shakespeare
1. Hello,world
//public:表示类是公共的,一个文件中只有一个public类
//class:表示这个是一个类
//HelloWorld:类名(公共类的类名,必须和文件名一样)
public class HelloWorld
{
//一个主函数,程序的入口
public static void main (String args[])
{
//执行语句
System.out.println("helloWorld!");
}
}
Java源程序(.java文件)—(javac?)—>java字节码文件(.class文件)
——>由解释执行器(java.exe) 将字节码文件加载到java虚拟机(jvm)
——>字节码文件(.class)就会在java虚拟机中执行
2. 变量&数据类型
整数 :(byte一个字节 :-128---127 int四个字节:-2147483648---+2147483647
short两个字节:-32768---+32767 long八个字节: )
小数(浮点): float double
布尔 :boolean
字符:char(两个字节,可以存放汉字, char test1 ='中';) 引申到 字符串(类)
VC++6.0里面好像,char就是1个字节吧……
在java中对char进行运算的时候,直接是当做ASCII码对应的整数
数据不能从高精度到低精度的转换 Byte<short<int<long<float<double
float a=3.4;是过不去的,在java中小数默认是double(双精度)的
应该写成是float a=3.4f;
不过可以强制转换:int a=(int)1.2; int b=(int)1.9
3. this类变量
1. this属于类的对象的而不是属于类的
2. this不能在类的外部使用,只能在类定义时候使用!
3. 可以用类名直接访问静态变量
4. 类成员(static成员)
package com.qcy.test;
public class Static_member {
private int j = 3;
static int i = 1;
static {
System.out.println("这是静态块,执行一次");
i++;
} // 会自动执行一次,也只有一次
public Static_member() {
System.out.println("Static_member构造函数");
i++;
}
public void accessI() {
System.out.println("非静态方法访问静态变量:"+i);
}
public void accessJ() {
System.out.println("非静态方法访问非静态变量:"+j);
}
static public void staticAccessI() {
System.out.println("非静态方法访问静态变量:"+i);
}
static public void staticAccessJ() {
// System.out.println(j); // 报错!
System.out.println("静态方法不能访问非静态变量!");
}
public static void main(String args[]) {
Static_member t1 = new Static_member();
System.out.println(Static_member.i);
Static_member t2 = new Static_member();
System.out.println(i);
t1.accessI();
t1.staticAccessI();
t2.accessI();
t2.accessJ();
Static_member.staticAccessI();
Static_member.staticAccessJ();
System.out.println(Static_member.i);
}
}
Static_member构造函数
3
Static_member构造函数
4
非静态方法访问静态变量:4
非静态方法访问静态变量:4
非静态方法访问静态变量:4
非静态方法访问非静态变量:3
非静态方法访问静态变量:4
静态方法不能访问非静态变量!
.类方法(静态方法、静态函数):属于所有对象实例的。
Java中:类变量(static)原则上用类方法(static)去访问;
类方法中不能访问非静态变量,就是非类变量,
但是普通的成员方法可以访问静态变量(类变量)。
使用:类名.类方法名 对象名.类方法名
非类变量就是实例变量,属于每个对象自己的
5. OOP的几大特征
三(四)大特征:封装、继承、多态(、抽象)
抽象:把一类事物的共有的属性和行为提取出来,形成一个物理模板,此研究问题的方法就是抽象
封装:把抽象出来的数据和对数据的操作封装在一起,数据被保护在内部,程序的其它部分只有通过被授权的操作(成员方法),才能对数据进行操作。
多态,OOP的核心。有点复杂。很是复杂…(总结暂时放在以后,e.g. C++学习的系列文章)
6. 封装的访问控制修饰符
四种访问控制符:
公开级别:public。
受保护级别:protected。对子类和同一个包中的类公开
默认级别: 没有修饰符,向同一个包的类公开,子类不可以访问类中默认级别的元素的(C++规定,class里,默认的也就是private!)
私有级别:用private修饰,只有类本身才能访问(别人笔记上这么写,估计以后要好好想想这句话的含义)
包的主要作用:区分相同名字的类,当类很多的时候可以很好的管理类,控制访问范围。
7. 访问修饰符&重载、覆盖
1. 一个文件中如果只有public类,那么这个public类可以不用主函数
2. 不想被继承就设为protected(和C++的继承不一样!)
3. 子类最多只能继承一个父类,Java里面不允许一个子类继承多个父类,C++却可以,如Java中一定要呢,就用接口吧
4. Java的所有类都是Object 的子类,继承层次数没有限制
5. JDK6.0里面有202个包,3777个类、接口、异常、枚举、注释和错误
6. 在做开发的时候多使用JDK帮助文档
7. 方法重载:类的同一种功能的多种实现方式,取决于调用者传递的参数
8. 方法重载注意事项:
方法名相同
方法的参数类型,个数,顺序至少有一项不同
方法的修饰符可以不同
方法的返回类型可以不同
另外:
只是返回类型不一样并不构成重载
只是控制访问修饰符不一样不构成重载
方法覆盖注意:
子类的方法的返回类型、参数、方法名称要和父类的一样,否则编译出错
子类方法不能缩小父类方法的访问权限,但是扩大是可以的(不是很清楚)
重载和覆盖,应该都是属于多态的问题。
第一篇,先”抄“这么多。
书中自有黄金屋,人丑就该多读书。