1.Java中两大类型
基本数据类型:int long short double
引用类型:类 接口 数组
栈和堆:
局部变量:栈直接存储基本数据类型的值
堆中存储引用类型的数据,栈中存储对象的地址 int [] arr={1,3,4};
栈:比较小 存取快 存储特点:先进后出 方法运行结束的时候,数据出栈
堆:大 存取速度要慢 堆:只要有空间,就可以申请内存,当栈中的引用出栈的时候,内存变为垃圾内存,等待垃圾回收
面向对象:封装 继承 多态
定义类
public class Car{
成员变量
成员方法
}
使用类
main(){
1.导包
2.创建对象 Car car=new Car();
3.使用属性 car.price=10000000;
syso(car.price);//成员变量的是有默认值
}
1.今日单词
price 价格
brand 品牌
private 私有
public 公有的
2.学习目标
栈堆内存图
//引数传递 传递的是引用类型 传递地址
//返回值 返回的是引用类型 返回的是地址
成员变量和局部变量的区别?
1.定义位置不一样
局部变量:方法内部
成员变量:类内方法外
2.作用范围不一样
局部:只有方法内部可以使用 出了方法就不能用
成员变量:整个类都可以使用
3.默认值不一样
局部变量:没有默认值 如果想使用 必须进行赋值
成员变量:有默认值 默认值规则和数组一样
4.内存位置不一样
局部:基本数据类型;数据直接存储在栈中
引用类型:数据存储在堆中,栈中存储对象的地址
成员变量:存储在堆
5.生命周期不一样
局部变量:随机方法进栈而诞生 随着方法而消失
成员变量:随着对象的创建而诞生 随着对象被立即回收而消失
面向对象三大特性:
1.封装 广义上的封装:封装一个方法 封装一个模块 框架 Mybatis
狭义上的封装:private
/**
* private 私有 本类内部可以访问 类外部不可以访问
*
* 封装:一个私有的成员变量 两个公开的方法
* 公开的方法 Getter/Setter方法
*
* 必须叫setXxx和 getXxx 命名规则
* boolean变量 set不变setXxx get变为 isXxx
*
* 一个私有的成员变量 只有get没有set 只读不能写
* 一个私有成员变量 只有set没有get 只能写不能读
* @author XuYang
*
*/
public class Person {
private boolean gender;
public void setGender(boolean b){
gender=b;
}
public boolean isGender(){
return gender;
}
private String name;
public void setName(String n){
name=n;
}
public String getName(){
return name;
}
private int age;//保护age 用private
//1.使用private保护成员变量
//2.外部不能访问 要继续使用被保护的成员变量 怎么办?提供公共的方法 来访问
//3.提供两个公有的方法 分别访问和设置
public int getAge(){
return age;
}
}
this 关键字
构造函数
/**
* 构造函数 :构造方法是专门用来创建对象的方法
* 作用1.创建对象
* 2.初始化的变量
* name 赋值 应该在创建对象的完成 创建对象调用构造函数
*语法:定义
*public 类名称(参数列表){
* 方法体
*}
*调用:当我们使用new关键创建对象的时候 其实就是在调用构造方法
*
*注意事项
*1.构造方法的名字和类名必须完全一样 ,大小写也要一样
*2.构造方法没有返回值 void 也不能写
*3.构造返回不能return 一个具体的结果
*4.如果没有编写任何的构造方法 编译器会提供一个默认的构造方法 (没有参数 没有方法体) 低保原则
* 如果一旦自己编写了构造方法 编译器就不提供了
*5.构造方法可以重载
*
*6.设置构造函数为private 外部不能创建对象 单例模式
* @author XuYang
*
*/
public class Cat {
private String name;
//私有的成员变量
// public Cat(String name){
// this.name=name;
// }
private Cat(){
}
public String getName() {
return name;
}
// //无参数的构造函数 构造对象
// public Cat(){
// System.out.println("哈哈哈 我被调用了");
// }
}
标准类
/**
* Java 标准类
* 1.所有成员变量都用private修饰
* 2.为每一个成员变量编写一对儿get/set方法
* 3.编写一个无参数的构造方法
* 4.编写一个全参的构造方法
* @author XuYang
*
*/
public class Teacher {
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
private String name;
private int age;
private double salary;
public Teacher(){
}
public Teacher(String name,int age,double salary){
this.name=name;
this.age=age;
this.salary=salary;
}
}