快捷键
package com.bjpowernode.javase;
//package机制是java语法的一部分
public class HelloWorld {
public static void main(String[] args) {
// TODO Auto-generated method stub
// 快捷键
// ctrl + D 删除一行
// alt + / 自动补全
// ctrl + s 保存
// ctrl + 1 鼠标停留在红色下划线,2211自动纠错
// ctrl + shift + f 自动纠正格式
// ctrl + / 注释与取消注释
// ctrl + shift + / 多行代码的注释与取消注释
System.out.println("Hello World !");
}
}
构造函数
package com.bjpowernode.javase;
public class Constructor {
private int num;
static String country = "中国";//静态变量,类加载时直接分配内存,不用创建对象,该变量与.class关联,存储于方法区内存中
public void printNum() {
System.out.println(num + "出现了!!!");//this大多数情况下都可以省略不写
System.out.println(this.num + "又出现了!!!");
}
public Constructor() {
//默认构造函数
System.out.println("我是默认构造函数");
}
public Constructor(int i) {
//带参构造函数
System.out.println("我是带参构造函数");
num = i;
}
{
System.out.println("我是实例代码块,我在构造函数执行前执行1");
}
{
System.out.println("我是实例代码块,我在构造函数执行前执行2");
}
{
System.out.println("我是实例代码块,我在构造函数执行前执行3");
}
public void setNum(int a) {
num = a;
}
public int getNum() {
return num;
}
public static void main(String[] args) {
ConstructorTest.main();
ConstructorTest.main("哈哈哈哈");
}
}
package com.bjpowernode.javase;
public class ConstructorTest {
public static void main(String[] args) {
System.out.println("我是main函数,我在静态代码块后面执行");
Constructor u = new Constructor();
System.out.println(u.getNum());
u.setNum(50);
System.out.println(u.getNum());
Constructor v = new Constructor(100);
System.out.println(v.getNum());
u.printNum();
v.printNum();
System.out.println(Constructor.country);//静态参数,用类型.参数访问
}
static {
System.out.println("我是静态代码块,我执行后main函数才执行");
}
//main函数也可以重载,使用 类名.main(参数)调用
public static void main() {
System.out.println("我是main函数的无参重载");
}
public static void main(String x) {
System.out.println(x + "我是main函数有参重载");
}
}
封装
package com.bjpowernode.javase;
public class Student {
//学号
int no;
//姓名
String name;
//年龄
private int age; //将age设置成私有,提高安全性
//住址
String addr;
//性别
String sex;
public static void testFun() {
System.out.println("我是有static关键字修饰的方法");
}
public void setAge(int a) {
//编写业务逻辑代码进行安全控制
if(a < 0 || a > 150){
System.out.println("输入的年龄不合法");
return ;
}
//年龄合法
age = a;
}
public int getAge() {
return age;
}
}
package com.bjpowernode.javase;
public class StudentTest {
// main方法自动补全
// 输入main,然后alt + /,回车
public static void main(String[] args) {
Student s = new Student(); // 后面的Student要加上();
System.out.println(s.no);
System.out.println(s.name);
System.out.println(s.addr);
System.out.println(s.sex);
//以下 测试有无static关键字的方法调用区别
s.setAge(22);//设置年龄 无static关键字修饰
System.out.println(s.getAge());
Student.testFun();//测试有static关键字修饰的函数
}
}
继承
package com.bjpowernode.javase;
public class Account {
private String actno; //账户
private double balance; //余额
public String getActno() {
return actno;
}
public void setActno(String actno) {
this.actno = actno;
}
public double getBalance() {
return balance;
}
public void setBalance(double balance) {
this.balance = balance;
}
public Account(String actno, double balance) {
super();
this.actno = actno;
this.balance = balance;
}
public Account() {
super();
}
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}
package com.bjpowernode.javase;
public class CreditAccount extends Account{
private double credit;
public double getCredit() {
return credit;
}
public void setCredit(double credit) {
this.credit = credit;
}
public CreditAccount(String actno, double balance, double credit) {
super(actno, balance);
this.credit = credit;
}
public CreditAccount() {
super();
}
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}
package com.bjpowernode.javase;
public class ExtendsTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
ExtendsTest et = new ExtendsTest();
String s = et.toString();
System.out.println(s);
CreditAccount act = new CreditAccount();
act.setActno("act-001");
act.setBalance(-10000.0);
act.setCredit(0.99);
System.out.println(act.getActno() + "," + act.getBalance() + "," + act.getCredit());
}
}
方法覆盖override
package com.bjpowernode.javase;
public class Animal {
//动物都可以移动
public void move() {
System.out.println("动物在移动");
}
}
package com.bjpowernode.javase;
public class Bird extends Animal{
//对父类中的move()进行重写
public void move() {
System.out.println("鸟儿在飞翔");
}
public void fly() {
System.out.println("鸟儿用翅膀飞翔");
}
}
package com.bjpowernode.javase;
public class Cat extends Animal{
//对父类中的move()进行重写,这就叫override
public void move() {
System.out.println("猫在走猫步");
}
//子类特有的行为
public void catchMouse() {
System.out.println("猫抓老鼠");
}
}
package com.bjpowernode.javase;
public class Hen extends Bird {
//生成子类的而覆盖方法: 右键-> Source -> Override/Implement Methods -> 勾选 -> OK
@Override
public void move() {
// TODO Auto-generated method stub
System.out.println("母鸡飞不起来");
}
}
多态
package com.bjpowernode.javase;
public class PmpTest {
public static void main(String[] args) {
//使用多态语法机制
//Cat is Animal.合法
Animal a2 = new Cat(); //子类型转换为父类型,向上转型upcasting,自动类型转换
a2.move(); //调用的是Cat的move()方法
//a2.catchMouse();//但是这样会报错
//编译阶段编译器检查到a2的类型是Animal,从Animal.class字节码文件中查找catchMouse()方法,最终没有找到该方法,导致静态绑定失败,也就是编译失败。
Cat c2 = (Cat)a2;//父类型转化为子类型
c2.catchMouse();
Animal a3 = new Bird();
if(a3 instanceof Cat) {
Cat c3 = (Cat)a3;
c3.catchMouse();
}else if(a3 instanceof Bird){
Bird b2 = (Bird)a3;
b2.fly();
}
//Cat c3 = (Cat)a3;
//编译没有任何问题,但是在运行阶段会出现异常,因为JVM堆内存当中真实存在的对象是Bird,Bird对象无法转化为Cat对象,两种类型之间不存在任何继承关系
//出现了著名的异常java.lang.ClassCastException异常,这种异常总是在 向下转型 时候发生(强制类型转换)
//使用instanceof运算符可以避免出现以上的异常
}
}
final关键字
package com.bjpowernode.javase;
public class FinalTest {
}



