动力节点学习笔记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;
- }
- }