1.成员变量和局部变量
1.1什么是成员/局部变量:根据变量定义位置的不同,我们给变量分为成员变量和局部变量两种
成员变量定义再类中方法外,局部变量定义在方法内部或者方法的括号内
例如:public class Test01 {
int a;//成员变量,属于对象的
public void print(){
int b;//局部变量,方法的内部使用
}
}
1.2成员和局部变量的区别:
2.1位置:成员变量在类中,方法外,局部变量在方法中或者方法括号内 (形式参数)
2.2作用范围:成员变量类中都能使用;局部变量只能在该方法中使用
2.3初始值:成员变量根据变量的类型不同有不同的默认值;局部变量没有默认值必须先赋值再使用
基本数据类型 整数(byte,short,int,long) 0
浮点型(float,double) 0.0
字符型(char) ’\u0000’
布尔型(boolean) false
引用类型 数组,类,接口,String null
2.4在内存中的位置:局部变量在栈中,随着方法的调用入栈而变量存在,随着方法的调用结束而销毁
成员变量在堆中,属于对象的,随着对象的创建而存在,对着对象被垃圾回收而消失
2.封装
2.0概述:封装就是将成员变量加以限制,防止该类的
数据被其他类随意访问和修改,若要访问该类的数据, 必须通过指定的方法.
2.1封装的步骤:
(1)给每一个成员变量前面添加private关键字使其私有化,进而不让其他类访问到
被private修饰的成员变量只能在当前类中访问和修改
(2)通过一个专门的setXxx方法去给属性赋值;一个专门的get方法获取值
(3)通过this关键字完善封装,
认识this:指代当前对象
2.1关键字
2.1.1private关键字:访问修饰符,可以将成员变量进行私有化,从而限制其他类访问
2.1.2this关键字
public class TestThis {
String name;//“张三”
//局部变量满足就近原则,this关键字
public void say(String name){
System.out.println(this.name+"你好,我是"+name);
//王思聪 王健林
}
public static void main(String[] args) {
TestThis zhangsan = new TestThis();
zhangsan.name = "张三";
zhangsan.say("张三他爹");
TestThis wsc = new TestThis();
wsc.name = "王思聪";
wsc.say("王健林");
}
}
3.构造方法
3.1概述:构造方法就是构建对象的方法,若没有构造方法就不能创建对象
说白了就是不能new,例如:Student s = new Student();
3.2特点:1.构造方法默认存在,只要创建了类就存在
2.没有返回值,连void关键字都没有
3.方法名和类名完全一致
4.在创建对象的时候自动被调用
5.可以重载
6.我们将封装好的类:包含有private set get 无参构造 有参构造 称为javabean
package sk2;
//练习:创建一个类Student,属性 stuNo name age sex address
// 封装属性,自定义一个show方法显示个人信息
// 创建对象调用set方法赋值,调用show显示个人信息 javabean
public class Student {
private int stuNo;
private String name;
private int age;
private char sex;
private String address;
public Student(){}
public Student(int stuNo,String name,int age,char sex,String address){
this.stuNo = stuNo;
this.name = name;
this.age = age;
this.sex = sex;
this.address = address;
}
//stuNo
public void setStuNo(int stuNo){
this.stuNo = stuNo;
}
public int getStuNo(){
return stuNo;
}
//name
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
//age
public void setAge(int age){
this.age = age;
}
public int getAge(){
return age;
}
//sex
public void setSex(char sex){
this.sex = sex;
}
public char getSex(){
return sex;
}
//address
public void setAddress(String address){
this.address = address;
}
public String getAddress(){
return address;
}
public void show(){
System.out.println(stuNo+“:”+name+“:”+age+“:”+sex+“:”+address);
}
}
package sk2;
public class TestStudent {
public static void main(String[] args) {
Student zhangsan = new Student();
zhangsan.setName(“张三”);
zhangsan.setAge(18);
zhangsan.setSex(‘男’);
zhangsan.setStuNo(02);
zhangsan.setAddress(“湖北武汉”);
zhangsan.show();
Student lisi = new Student(03,"lisi",18,'男',"SK");
lisi.show();
}
}
4.可变形参数作用是什么,
4.1概述:就是定义一个方法,方法的括号里面的参数是不确定的
//练习:让用户随意输入不确定数量的整数,定义方法找到其中的最大数,最小数
public class Test01 {
public static void main(String[] args) {
test(1,2,4,23,123,5,2,31,2,41,14);
}
public static void test(int… a){
int max = 0;
int min = 1000000;
for(int i=0;i<a.length;i++){
if(a[i]>max){
max = a[i];
}
if(a[i]<min){
min = a[i];
}
}
System.out.println(“最大数:”+max);
System.out.println(“最小数:”+min);
}
}
5.java的访问权限修饰符有哪些?分别的限制范围?
5.1概述:访问权限修饰符是用来限制被修饰的对象的访问范围的
5.2有这样几个:private public protected (default)
5.3可以修饰什么? 类、成员变量、成员方法
5.4类一般都是public毋庸置疑
5.5被private修饰的内容只能够在本类当中访问到
5.6被public修饰的内容,所有的类都可以访问到
5.7被default修饰的内容,可以在本类和同包中的不同类中访问到
5.8被proteced修饰的内容,可以在本类和同包中的不同类和不同包中的子类中访问到
图解见课本P32
6.static关键字作用
6.1概述:static是静态的意思,可以修饰成员变量、成员方法、还有static{ }是静态代码块
6.2特点:
6.2.1被修饰的对象存储在静态方法区当中,
随着类的加载就会被执行且只会执行一次
只执行一次的好处:占用的永远是同一块内存
6.2.1思考:右键运行后是对象先被创建还是静态代码先执行