java基础教程期末复习知识点

1. i++和++i的区别

java基础教程期末复习知识点_第1张图片

i++是先赋值,然后再自增;++i是先自增,后赋值。
用代码表示就是:
若 a = i++; 则等价于 a=i;i=i+1;
而 a = ++i; 则等价于 i=i+1;a=i;

2. Java中的按位与(&)、按位或(|)、异或(^)等运算符


按位与运算符(&)

参加运算的两个数据,按二进制位进行“与”运算。

运算规则:0&0=0; 0&1=0; 1&0=0; 1&1=1;

即:两位同时为“1”,结果才为“1”,否则为0

3. 运算符的优先级

关系运算(比较大小)优先于逻辑运算(&、||)且&&优先于||

4. java的基本数据类型

5. 上转型

  1. 使用父类声明子类对象;

  2. 对于上转型对象,调用的是父类的静态方法和成员变量。(称为隐藏)
    但是成员方法调用的是子类的。(称为覆盖)

6. super的用法

  1. 调用父类的构造方法
  2. 引用父类同名成员

super()一般位于子类构造方法的第一行,相当于生成了一个父类对象。

7. abstract 抽象类

  1. 抽象类不能被实例化,只能作为父类。
  2. 抽象类中的抽象方法不写方法体,方法体由子类实现。
  3. 子类必须实现所有抽象方法。(接口也是)
  4. 理解:抽象类相当于制造了一个模板或者约定,去创建它的子类。

final 修饰

  1. 修饰变量时候相当于一个常量。
  2. 修饰类的时候,不过不希望一个类被继承,则声明该类为final类(最终类);
  3. 修饰方法:如果不希望一个类被子类覆盖。

8. 接口

  1. 是一种特殊的抽象类
  2. 主要作用说白了就是让类能够继承好几个“父类”;

9. 类型转化

String——>int
Integer.parseInt()

char ——> String

  1. String s = character.toString('c')
  2. String s = ”“+‘c’
  3. String s = String.valueof(new char[]('H','E','L','L','O'))

10. 数组の创建

int []array = new int[n];
String[] attrPoker = {"♥","♦","♣","♠"};

11.GUI - 布局

  1. FlowLayout(默认)
  2. BorderLayout
  3. GridLayout

12.GUI - 容器

Swing的顶层容器包括 JFrame(常用)、JDialog、Japplet

13. IntelliJ中的main函数和System.out.println()快捷键

14. 线程的实现方法

  1. 继承 Thread
  2. 接口 Runnable

15. 同步锁

同步锁synchronized


教材p202 例8.6

package Thread;

public class Account {
    private int balance;
    public Account(int balance){
        this.balance = balance;
    }
    public int getBalance(){
        return balance;
    }
    public int withDraw(int amount){
        if(amount<0) {
            System.out.println("取款金额为负!操作无法执行。");
            return 0;
        }else{
            balance-=amount;
            return amount;
        }
    }
}

class MultiWithDraw extends Thread{
    private Account account;
    private int amount;
    public MultiWithDraw(Account account, int amount){
        this.account = account;
        this.amount = amount;
    }

    @Override
    public void run() {

        synchronized (account){  //注意此处使用到了同步锁
            String str = Thread.currentThread().getName()+"取款前余额:"+account.getBalance();
            try{
                sleep(5);
            }catch (InterruptedException e){
                e.printStackTrace();
            }
            System.out.println(str+"取款:"+account.withDraw(amount)+"取款后余额为:"+account.getBalance());
        }
    }

    public static void main(String[] args) {
        Account a = new Account(500);
        for(int i=1;i<=10;i++){
            (new MultiWithDraw(a,10+i)).start();
        }
    }

}

你可能感兴趣的:(个人编程)