2017年3月17号课堂笔记

2017年3月17号 中度雾霾

主要内容:

类和对象第一节

一、老师总结讲课内容:

类和对象

类: 我们在生活中 对身边的事物,进行一个不自觉的分类!对事物的抽象!
类 定义了对象将会拥有什么特性(属性)以及行为(方法)!
对象:描述客观事物的一个实体!看得见摸得着! 万物皆对象!

类和对象的关系!
类是对象的模版,对象是类的实例!

使用类的步骤!
01.创建类 class 关键字
02.创建类中的属性
03.创建类中的方法

使用对象
01.类名 对象名=new 类名(); 实例化对象!
02.使用对象的属性 对象名.属性名
03.使用对象的方法 对象名.方法名

成员变量:直接写在类中的!没有在方法中! 系统会赋予初始值!
局部变量:在方法中!没有赋值,不能直接使用!

当一个类中存在相同的 成员变量和 局部变量的时候,
如果是在方法体中使用,就近原则,使用 局部变量!

访问修饰符(权限)
public :同类,同包,子类和其他任何地方
protected:同类,同包,子类

默认的 :同类,同包

private:同类

 

 

 

二、老师画图讲解(对象在内存地址中如何操作)

 内存中原来存储stu2数据的位置会在未来某个不确定的时刻被GC(垃圾回收机制)处理掉!

****************************************************************

 GC(垃圾回收机制):

 

三、Demo01(学生老师类)

 1、老师代码:

1)学生类

package cn.bdqn.bean;

/**
* java本身就是一个面向对象的语言!
*
* cn.bdqn.bean/entity/domain/pojo
* 实体类: 具体对象的类!
* 用于保存特性和行为而建立的类!
*
* 类:是我们在生活中对身边事物的不自觉分类!并不真实存在!抽象出来的!
* 对象:用来描述实体的特征和行为的一个实体!
*
* 类和对象的关系:
* 01.类是对象的模版(抽象)
* 02.对象是类的实例(具体)看的见,摸得着
* 03.满足is a 的关系
*
* 动物:没有! -----》类
* 有的是 小猫,小狗,小企鹅! -----》对象
*
*
* 小猫 是 动物!
* 小狗 是 动物!
* 小狗 is a 动物!
* 对象 is a 类!
*
* 动物是 小狗! 错误!
* 动物是 小猫!
*
*
* 万物皆对象!
* 一个类可以创建多少个对象? N个!每个对象都是独一无二!
* 类名首字母必须大写! 满足帕斯卡命名法!
* 方法名和属性 满足 驼峰命名法!
*
*
* 类 对象
* 植物创建出来了 100个花草!
* 每个花草都需要阳光和土壤!
* 类{
* 阳光;(属性)
* 土壤;
* }
* 100个花草共享这些阳光和土壤!
* 属性属于对象!
*
*
* 通过类来创建出具体对象的过程!我们称之为实例化!
* Scanner input=new Scanner(System.in);
*
* 自定义数据类型都属于引用数据类型!
* 默认值都是null!
*/

public class Student01 {
/**
* name,age,address 成员变量!
* 01.可以不赋初始值
* 02.写在类中
*
* 写在方法中的我们称之为局部变量!
* 现在全局变量 都没有设置访问修饰符!
* 那么他们的访问修饰符都是默认的!本包中所有类都可以访问
*/
String name; // 姓名
int age; // 年龄
String address;// 住址

/**
* 访问修饰符
* 01.public 公共的!所有类都可以访问!
* 02.protected 受保护的!子类中可以访问!
* 03.private 私有的!只有本类中可以访问!
* 04.default 默认的!本包中所有类都可以访问!
*/
public void showInfo() {
// String name = "小2"; 局部变量 就近原则
System.out.println("姓名:" + name);
System.out.println("年龄:" + age);
System.out.println("住址:" + address);
}

}

2)学生测试类

package cn.bdqn.bean;

import org.junit.Test;

public class StudentTest02 {

public static void main(String[] args) {

/**
* 创建对象
* 语法:
* 类名 对象名=new 类名();
*
* 调用对象的属性
* 对象名.属性名
* 调用对象的方法
* 对象名.方法名
*/
Student01 stu = new Student01(); // 实例化对象
stu.showInfo();
System.out.println("**********************");
stu.name = "小黑"; // 给对象的name属性赋值
stu.age = 50; // 给对象的age属性赋值
stu.address = "人间"; // 给对象的address属性赋值
stu.showInfo(); // 调用对象的showInfo()
}

// 创建多个对象 每个对象都是独一无二的!
@Test
public void test01() {
Student01 stu1 = new Student01();
// 给第一个学生的属性赋值
stu1.name = "小黑1";
stu1.age = 50;
stu1.address = "人间1";
stu1.showInfo();

Student01 stu2 = new Student01();
// 给第二个学生的属性赋值
stu2.name = "小黑2";
stu2.age = 50;
stu2.address = "人间2";
stu2.showInfo();
}

/**
* 比较两个对象的内存地址是否相同
* 01.引用数据类型在 ==比较的是内存地址
*/
@Test
public void test02() {
Student01 stu1 = new Student01();
Student01 stu2 = new Student01();
System.out.println(stu1 == stu2);
}

/**
* 比较两个对象的内存地址是否相同
* 02. 引用数据类型在 = 赋值的时候 ,赋的是内存地址
*/
@Test
public void test03() {
Student01 stu1 = new Student01();
Student01 stu2 = stu1;
System.out.println(stu1 == stu2);
}

/**
* 栈中的的两个对象 同时 指向堆中的一块区域
* 一个对象改变了堆中的内容
* 另一个对象的内容也随之改变
*/
@Test
public void test04() {
Student01 stu1 = new Student01();
stu1.name = "小黑";
stu1.age = 50;
stu1.address = "人间";
Student01 stu2 = stu1;

stu2.name = "小白";
System.out.println(stu1.name);
}

/**
* stu2之前所创建的new Student()会在一个不确切的时间点!
* 被GC回收!
*/
@Test
public void test05() {
Student01 stu1 = new Student01();
stu1.name = "小黑";
Student01 stu2 = new Student01();
stu2 = stu1;
stu2.name = "小白";
System.out.println(stu1.name);
}

}

2、自己代码:

1)学生类:

package cn.bdqn.bean;

/**
*
*<P>Title<P>Student
*<P>Description<P>
*cn.bdqn.bean/entity/domain/pojo
*实体类:具体对象的类!
*用于保存特性和行为而建立的类!
* @author alex
* @date 2017-3-17上午9:02:37
* You can either travel or read,but either your body or soul must be on the way
*/
public class Student {
String stuName;
int age;
int clazz;
String favor;

public void showInfo() {

System.out.println(stuName + "\n年龄:" + age + "\n就读于:" + clazz
+ "班\n爱好:" + favor);
}

}

2)老师类:

package cn.bdqn.bean;

public class Teacher {
String teacherName;
String major;
String course;
int teachAge;

public void showTeacherInfo() {
System.out.println(teacherName + "\n专业方向:" + major + "\n教授课程:" + course
+ "\n教龄:" + teachAge);
}
}

3)测试学生老师类:

package cn.bdqn.bean;

public class StudentAndTeacherTest {
public static void main(String[] args) {
Student stu1 = new Student();
stu1.stuName = "香吉士";
stu1.age = 23;
stu1.clazz = 13;
stu1.favor = "足球";
stu1.showInfo();
System.out.println("**********************************");

Teacher t1 = new Teacher();
t1.teacherName = "王老师";
t1.major = "计算机";
t1.course = "java";
t1.teachAge = 5;
t1.showTeacherInfo();
}
}

 四、Demo02(管理员密码验证)

1、老师代码:

1)管理员类:

package cn.bdqn.bean;

/**
* 管理员对应的实体类
*/
public class Adminstrator03 {

String name = "admin"; // 用户名
String password = "123456"; // 密码

}

2)测试类:

package cn.bdqn.bean;

import java.util.Scanner;

public class AdminTest04 {

public static void main(String[] args) {
// 创建一个管理员
Adminstrator03 admin = new Adminstrator03();
Scanner scanner = new Scanner(System.in);
System.out.println("请输入您的用户名:");
String name = scanner.next();
System.out.println("请输入您的密码:");
String password = scanner.next();
// 判断和默认值是否一致
if (name.equals(admin.name) && password.equals(admin.password)) {
System.out.println("请您输入新密码:");
admin.password = scanner.next(); // 给管理员的密码属性 赋值
System.out.println("更改之后的密码是:" + admin.password);
} else {
System.out.println("您的用户名或者密码不正确!");
}

}

}

2、自己代码:

1)用户密码类

package cn.bdqn.test;

/**
*
*<P>Title<P>ManageUserPassword
*<P>Description<P>模拟实现管理用户密码系统
*需求:输入旧的用户名密码,如果正确,方有权先更新;
*从键盘获取新的密码,进行更新;
* @author alex
* @date 2017-3-2下午2:53:17
* You can either travel or read,but either your body or soul must be on the way
*/
import java.util.Scanner;

public class ManageUserPassword {
// 属性:用户名、密码
String username = "admin1";
String password = "111111";

// 方法:判断获取的用户名密码是否正确,决定是否有权更新;
public void manage() {
Scanner input = new Scanner(System.in);
if (username.equals("admin1") && password.equals("111111")) {
// 正确,方有权先更新;从键盘获取新密码进行更新;
System.out.println("请输入新密码:");
String password = input.next();
System.out.println("修改密码成功,您的新密码为:" + password);
} else {
// 错误,则无权限更新;
System.out.println("用户名和密码不匹配!您没有权限更新管理员信息!");
}
}
}

2)测试类:

package cn.bdqn.test;

import java.util.Scanner;

/**
*
*<P>Title<P>TestManageUserPassword
*<P>Description<P>测试用户密码管理类的可用性
* @author alex
* @date 2017-3-2下午3:12:20
* You can either travel or read,but either your body or soul must be on the way
*/
public class TestManageUserPassword {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);

ManageUserPassword user1 = new ManageUserPassword();
System.out.println("请输入用户名:");
user1.username = input.next();
System.out.println("请输入密码:");
user1.password = input.next();
user1.manage();
}
}

 五、Demo03(金卡普卡反馈积分)

 1、老师代码:

1)顾客类:

package cn.bdqn.bean;

/**
* 顾客的实体类
*/
public class Customer05 {

String cardType; // 卡类型
int points; // 积分

// 显示当前对象的积分和卡类型
public void showInfo() {
System.out.println("您当前的信息是:**************");
System.out.println("卡类型" + cardType);
System.out.println("积分" + points);
if ((cardType.equals("金卡") && points > 1000)
|| (cardType.equals("普卡") && points > 5000)) {
System.out.println("回馈积分:500");
points += 500;
System.out.println("您现在的积分是:" + points);
} else {
System.out.println("您不能参加回馈活动!");
}
}
}

2)测试类(回馈):

package cn.bdqn.bean;

import java.util.Scanner;

public class CustomerTest06 {

public static void main(String[] args) {

// 创建顾客
Customer05 customer = new Customer05();
Scanner scanner = new Scanner(System.in);
System.out.println("请输入卡的类型:");
// 给顾客的属性赋值
customer.cardType = scanner.next();
System.out.println("请输入您的积分:");
customer.points = scanner.nextInt();
// 显示信息
customer.showInfo();
}

}

2、自己代码:

1)客户积分回馈类

package cn.bdqn.bean;

//客户积分回馈类
/*
* 金卡客户,积分1000,回馈500
* 普卡客户,积分5000,回馈500
*/
public class Customer {
int points;
String type;

public void feedback() {
if ((type.equals("金卡") && points > 1000)
|| (type.equals("普卡") && points > 5000)) {
System.out.println("客户类型:" + type + "\n积分是:" + points);
points += 500;
System.out.println("回馈积分500分,回馈后积分为:" + points);
} else {
System.out.println("对不起,您的积分不够,无法参加此次回馈积分活动!");
}
}
}

2)客户反馈积分测试类

package cn.bdqn.bean;

//客户反馈积分测试类
import java.util.Scanner;

public class CustomerTest {
public static void main(String[] args) {
Customer cus1 = new Customer();
Scanner input = new Scanner(System.in);
System.out.println("请输入您的客户类型:");
cus1.type = input.next();
System.out.println("请输入您的积分:");
cus1.points = input.nextInt();
cus1.feedback();
}
}

 六、作业

1、预习:到封装之前

2、做题

 

七、考试

2017.03.17
15:03 开始,15:46结束;答题时间:42分钟;检查时间:1 分钟;
成绩:92 分


虽然及格了,但是考试以来答题最吃力的一次(时间长心里没底),答完题感觉太烧脑了。
注意作息时间,调整为早睡早起,连续熬夜到12点之后,撑不住了。

 

八、视频进度

目前多态还差一点儿没看完,周一上课前争取看完接口。努力,为了以后能跟上大数据!

困了累了,喝java!

 

九、老师辛苦了!

 

 

转载于:https://www.cnblogs.com/wsnedved2017/p/6565899.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值