动力节点学习笔记

  1. //定义现实世界中的学生类型.  
  2. //Student是一个类,一种引用类型。  
  3. //概念上的一个定义,现实世界中不存在。  
  4.  
  5. public class Student{  
  6.       
  7.     //属性  
  8.       
  9.     //学号  
  10.     int id; //成员变量,实例变量,非静态变量  
  11.               //id是对象的级别的,必须先有对象才能访问,不能使用类直接访问。  
  12.       
  13.     //姓名  
  14.     String name;  
  15.       
  16.     //性别  
  17.     boolean sex;  
  18.       
  19.     //年龄  
  20.     int age;  
  21.       
  22.     //住址  
  23.     String addr;  
  24.       
  25.       
  26.     //方法  

 

  1. /*  
  2.     对象如何创建,又如何使用  
  3. */ 
  4. public class OOTest01{  
  5.       
  6.     public static void main(String[] args){  
  7.           
  8.         //1.创建对象.  
  9.         //stu1是一个局部变量.这个局部变量stu1是Student类型,也就是一个引用类型。  
  10.         //stu1该局部变量称作引用,引用中保存的了对象在堆中的内存地址。  
  11.         //通过“引用”去间接访问堆中的对象。  
  12.         Student stu1 = new Student();  
  13.           
  14.         //一个类可以创建多个对象  
  15.         //Student stu2 = new Student();  
  16.           
  17.           
  18.         //2.使用对象  
  19.         //访问成员变量,必须使用“引用.”  
  20.           
  21.         //name是成员变量,对象相关,必须先有对象才能访问,必须使用“引用.”  
  22.         //System.out.println(Student.name); //Error  
  23.           
  24.         //读取过程  
  25.         System.out.println("id=" + stu1.id); //0    
  26.         System.out.println("name=" + stu1.name); //null  
  27.         System.out.println("age=" + stu1.age); //0  
  28.         System.out.println("sex=" + stu1.sex); //false  
  29.         System.out.println("address=" + stu1.addr); //null  
  30.           
  31.         /*  
  32.             关于系统默认值:  
  33.                   
  34.                 基本数据类型  
  35.                   
  36.                     byte,short,int,long   0  
  37.                     float,double  0.0  
  38.                     boolean false  
  39.                     char    \u0000  
  40.                   
  41.                 引用数据类型:null  
  42.                   
  43.         */ 
  44.           
  45.         //赋值过程  
  46.         stu1.id = 100;  
  47.         stu1.name = "张三";  
  48.           
  49.         //stu1.age = -15;//虽然编译运行通过,但是程序不符合现实的业务逻辑。  
  50.         stu1.age = 15;  
  51.           
  52.         stu1.sex = true;  
  53.         stu1.addr = "北京朝阳";  
  54.           
  55.           
  56.         //读取过程  
  57.         System.out.println("id=" + stu1.id); //100   
  58.         System.out.println("name=" + stu1.name); //张三  
  59.         System.out.println("age=" + stu1.age); //15  
  60.         System.out.println("sex=" + (stu1.sex?"男":"女")); //true  
  61.         System.out.println("address=" + stu1.addr); //北京朝阳  
  62.                   
  63.     }  

 

  1.  
  2. //定义一个顾客类型  
  3. /*  
  4.     面向对象的封装性指的是:  
  5.         1.属性私有化  
  6.         2.对外提供公开的setter and getter  
  7.           
  8.         set方法和get方法的方法名应该遵循规范。  
  9. */ 
  10. public class Customer{  
  11.       
  12.     //属性  
  13.     //成员变量,实例变量,非静态变量  
  14.     private int age; //private修饰的数据只能在本类中访问.  
  15.       
  16.       
  17.     //对外提供两个公开的方法。  
  18.     //set  赋值  
  19.     public void setAge(int _age){  
  20.         //安全控制  
  21.         if(_age<0 || _age>100){  
  22.             System.out.println("年龄不合法");  
  23.             return;  
  24.         }  
  25.           
  26.         age = _age;  
  27.     }  
  28.       
  29.     //get  读取  
  30.     public int getAge(){ //成员方法,实例方法,非静态方法.  
  31.                                 //成员方法必须使用“引用.”的方式访问.  
  32.         return age;  
  33.     }  
  34.       
  35.       

 

  1. /*  
  2.     面向对象的封装性。  
  3. */ 
  4. public class OOTest02{  
  5.       
  6.     public static void main(String[] args){  
  7.           
  8.         //1.创建Customer类型的对象  
  9.         Customer c = new Customer();  
  10.           
  11.         /*  
  12.         //2.读取(get)  
  13.         System.out.println(c.age); //0  
  14.           
  15.         //3.赋值(set)  
  16.         c.age = 10;  
  17.         //c.age = -10; //因为age属性没有任何限制,导致外部程序可以随意访问age,导致age不安全。  
  18.                             //不合法的数据  
  19.           
  20.         //4.读取  
  21.         System.out.println(c.age); //10  
  22.         */ 
  23.           
  24.         //赋值  
  25.         c.setAge(-10);  
  26.           
  27.         //读取  
  28.         /*  
  29.         int age = c.getAge();  
  30.         System.out.println(age);  
  31.         */ 
  32.           
  33.         System.out.println(c.getAge()); //默认值 0  
  34.           
  35.     }  

 

  1. /*  
  2.     对象没有更多的引用指向,则变成垃圾.  
  3. */ 
  4. public class OOTest03{  
  5.       
  6.     public static void main(String[] args){  
  7.           
  8.         //u1是引用,保存内存地址指向堆中的对象。  
  9.         User u1 = new User();  
  10.           
  11.         //程序执行到此处,u1不再指向堆中的对象。  
  12.         //对象变成了垃圾。  
  13.         u1 = null;  
  14.           
  15.         //使用一个空的引用去访问成员,会出现什么问题?  
  16.         //System.out.println(u1.name); //java.lang.NullPointerException (空指针异常)  
  17.           
  18.           
  19.         Star s = new Star();  
  20.         s = null;  
  21.         s.sing(); //java.lang.NullPointerException  
  22.     }  
  23.       
  1. /*  
  2.     程序在执行过程中,参数的传递问题:  
  3.         1.传递的数据是基本数据类型.  
  4.         2.传递的数据是引用数据类型.  
  5.       
  6.     以下程序传递基本数据类型  
  7. */ 
  8. public class OOTest04{  
  9.  
  10.     public static void m1(int i){  
  11.         i++;  
  12.         System.out.println("m1--->" + i); //11  
  13.     }  
  14.           
  15.     //入口  
  16.     public static void main(String[] args){  
  17.           
  18.         //局部变量  
  19.         int i = 10;  
  20.           
  21.         //调用  
  22.         m1(i);  
  23.           
  24.         System.out.println("main--->" + i); //10  
  25.     }  
  26.  
  27. }  

 

  1. /*  
  2.     程序在执行过程中,参数的传递问题:  
  3.         1.传递的数据是基本数据类型.  
  4.         2.传递的数据是引用数据类型.  
  5.       
  6.     以下程序传递引用数据类型  
  7. */ 
  8. public class OOTest05{  
  9.  
  10.     public static void m1(Animal a){  
  11.         a.age++;  
  12.         System.out.println("m1--->" + a.age); //11  
  13.     }  
  14.           
  15.     //入口  
  16.     public static void main(String[] args){  
  17.           
  18.         //1.创建Animal对象  
  19.         Animal a = new Animal(10);  
  20.           
  21.         m1(a);  
  22.           
  23.         System.out.println("main--->" + a.age); //11  
  24.           
  25.     }  
  26.  
  27. }  
  28.  
  29. //动物  
  30. class Animal{  
  31.       
  32.     //Field  
  33.     int age;  
  34.       
  35.     //Constructor  
  36.     Animal(int _age){  
  37.         age = _age;  
  38.     }  
  39.       
  40. }