動力節點學習筆記java
- //定義現實世界中的學生類型.
- //Student是一個類,一種引用類型。
- //概念上的一個定義,現實世界中不存在。
- public class Student{
- //屬性
- //學號
- int id; //成員變量,實例變量,非靜態變量
- //id是對象的級別的,必須先有對象才能訪問,不能使用類直接訪問。
- //姓名
- String name;
- //性別
- boolean sex;
- //年齡
- int age;
- //住址
- String addr;
- //方法
- }
- /*
- 對象如何建立,又如何使用
- */
- public class OOTest01{
- public static void main(String[] args){
- //1.建立對象.
- //stu1是一個局部變量.這個局部變量stu1是Student類型,也就是一個引用類型。
- //stu1該局部變量稱做引用,引用中保存的了對象在堆中的內存地址。
- //經過「引用」去間接訪問堆中的對象。
- Student stu1 = new Student();
- //一個類能夠建立多個對象
- //Student stu2 = new Student();
- //2.使用對象
- //訪問成員變量,必須使用「引用.」
- //name是成員變量,對象相關,必須先有對象才能訪問,必須使用「引用.」
- //System.out.println(Student.name); //Error
- //讀取過程
- System.out.println("id=" + stu1.id); //0
- System.out.println("name=" + stu1.name); //null
- System.out.println("age=" + stu1.age); //0
- System.out.println("sex=" + stu1.sex); //false
- System.out.println("address=" + stu1.addr); //null
- /*
- 關於系統默認值:
- 基本數據類型
- byte,short,int,long 0
- float,double 0.0
- boolean false
- char \u0000
- 引用數據類型:null
- */
- //賦值過程
- stu1.id = 100;
- stu1.name = "張三";
- //stu1.age = -15;//雖然編譯運行經過,可是程序不符合現實的業務邏輯。
- stu1.age = 15;
- stu1.sex = true;
- stu1.addr = "北京朝陽";
- //讀取過程
- System.out.println("id=" + stu1.id); //100
- System.out.println("name=" + stu1.name); //張三
- System.out.println("age=" + stu1.age); //15
- System.out.println("sex=" + (stu1.sex?"男":"女")); //true
- System.out.println("address=" + stu1.addr); //北京朝陽
- }
- }
- //定義一個顧客類型
- /*
- 面向對象的封裝性指的是:
- 1.屬性私有化
- 2.對外提供公開的setter and getter
- set方法和get方法的方法名應該遵循規範。
- */
- public class Customer{
- //屬性
- //成員變量,實例變量,非靜態變量
- private int age; //private修飾的數據只能在本類中訪問.
- //對外提供兩個公開的方法。
- //set 賦值
- public void setAge(int _age){
- //安全控制
- if(_age<0 || _age>100){
- System.out.println("年齡不合法");
- return;
- }
- age = _age;
- }
- //get 讀取
- public int getAge(){ //成員方法,實例方法,非靜態方法.
- //成員方法必須使用「引用.」的方式訪問.
- return age;
- }
- }
- /*
- 面向對象的封裝性。
- */
- public class OOTest02{
- public static void main(String[] args){
- //1.建立Customer類型的對象
- Customer c = new Customer();
- /*
- //2.讀取(get)
- System.out.println(c.age); //0
- //3.賦值(set)
- c.age = 10;
- //c.age = -10; //由於age屬性沒有任何限制,致使外部程序能夠隨意訪問age,致使age不安全。
- //不合法的數據
- //4.讀取
- System.out.println(c.age); //10
- */
- //賦值
- c.setAge(-10);
- //讀取
- /*
- int age = c.getAge();
- System.out.println(age);
- */
- System.out.println(c.getAge()); //默認值 0
- }
- }
- /*
- 對象沒有更多的引用指向,則變成垃圾.
- */
- public class OOTest03{
- public static void main(String[] args){
- //u1是引用,保存內存地址指向堆中的對象。
- User u1 = new User();
- //程序執行到此處,u1再也不指向堆中的對象。
- //對象變成了垃圾。
- u1 = null;
- //使用一個空的引用去訪問成員,會出現什麼問題?
- //System.out.println(u1.name); //java.lang.NullPointerException (空指針異常)
- Star s = new Star();
- s = null;
- s.sing(); //java.lang.NullPointerException
- }
- }
- /*
- 程序在執行過程當中,參數的傳遞問題:
- 1.傳遞的數據是基本數據類型.
- 2.傳遞的數據是引用數據類型.
- 如下程序傳遞基本數據類型
- */
- public class OOTest04{
- public static void m1(int i){
- i++;
- System.out.println("m1--->" + i); //11
- }
- //入口
- public static void main(String[] args){
- //局部變量
- int i = 10;
- //調用
- m1(i);
- System.out.println("main--->" + i); //10
- }
- }
- /*
- 程序在執行過程當中,參數的傳遞問題:
- 1.傳遞的數據是基本數據類型.
- 2.傳遞的數據是引用數據類型.
- 如下程序傳遞引用數據類型
- */
- public class OOTest05{
- public static void m1(Animal a){
- a.age++;
- System.out.println("m1--->" + a.age); //11
- }
- //入口
- public static void main(String[] args){
- //1.建立Animal對象
- Animal a = new Animal(10);
- m1(a);
- System.out.println("main--->" + a.age); //11
- }
- }
- //動物
- class Animal{
- //Field
- int age;
- //Constructor
- Animal(int _age){
- age = _age;
- }
- }