基础语法
- 大小写敏感:Java 是大小写敏感的,这就意味着标识符 Hello 与 hello 是不同的。
- 类名:对于所有的类来说,类名的首字母应该大写。如果类名由若干单词组成,那么每个单词的首字母应该大写,例如 MyFirstJavaClass 。
- 方法名:所有的方法名都应该以小写字母开头。如果方法名含有若干单词,则后面的每个单词首字母大写。
- 源文件名:源文件名必须和类名相同。当保存文件的时候,你应该使用类名作为文件名保存(切记 Java 是大小写敏感的),文件名的后缀为 .java。(如果文件名和类名不相同则会导致编译错误)。
- 主方法入口:所有的 Java 程序由 public static void main(String[] args) 方法开始执行。
基本数据类型以及对应的包装类
基本数据类型 | 包装类 |
---|---|
short | Short |
int | Integer |
long | Long |
char | Character |
byte | Byte |
float | Float |
boolean | Boolean |
double | Double |
为什么有包装类:原始类型不能为null,但包装类可以为null。包装类可用于实现多态性。
多态性
先看个例子回忆一下
public class Test {
public static void main(String[] args) {
show(new Cat()); // 以 Cat 对象调用 show 方法
show(new Dog()); // 以 Dog 对象调用 show 方法
Animal a = new Cat(); // 向上转型
a.eat(); // 调用的是 Cat 的 eat
Cat c = (Cat)a; // 向下转型
c.work(); // 调用的是 Cat 的 work
}
public static void show(Animal a) {
a.eat();
// 类型判断
if (a instanceof Cat) { // 猫做的事情
Cat c = (Cat)a;
c.work();
} else if (a instanceof Dog) { // 狗做的事情
Dog c = (Dog)a;
c.work();
}
}
}
abstract class Animal {
abstract void eat();
}
class Cat extends Animal {
public void eat() {
System.out.println("吃鱼");
}
public void work() {
System.out.println("抓老鼠");
}
}
class Dog extends Animal {
public void eat() {
System.out.println("吃骨头");
}
public void work() {
System.out.println("看家");
}
}
看上面的例子就能理解到,多态其实就是一个对象可以转换成父亲对象或儿子对象,但转换后只能调用共同的方法。
这种策略有利于我们分块处理,比如上面的show(Animal a)方法中,我们其实是处理的很多动物,而不是一种动物,所以需要传入Animal,传入以后输出动物的共性:a.eat();再输出动物的特性(需要判断是什么动物:A instanceof B)
java向上转型的逻辑
javabean
例:
package Demo01;
import java.io.Serializable;
import java.text.DateFormat;
public class Demo01 implements Serializable{
Integer id;
StringBuffer name;
Double score;
DateFormat bir;
public static void main(String[] args) {
// TODO Auto-generated method stub
}
/**
* @param id
* @param name
* @param score
* @param bir
*/
public Demo01(Integer id, StringBuffer name, Double score, DateFormat bir) {
super();
this.id = id;
this.name = name;
this.score = score;
this.bir = bir;
}
/**
*
*/
public Demo01() {
super();
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public StringBuffer getName() {
return name;
}
public void setName(StringBuffer name) {
this.name = name;
}
public Double getScore() {
return score;
}
public void setScore(Double score) {
this.score = score;
}
public DateFormat getBir() {
return bir;
}
public void setBir(DateFormat bir) {
this.bir = bir;
}
@Override
public String toString() {
return "Demo01 [id=" + id + ", name=" + name + ", score=" + score + ", bir=" + bir + "]";
}
}