4.1.类是什么?
1.类–类型–数据类型—复合数据类型—自定义复合数据类型
为什么有复合数据类型?
基本数据类型就8种,在开发中远远不够,所以我们就需要一个可以根据自己的需求随时能制作出一个自己需要的数据类型。
2.类–具有共同性质的一组事物的群体。 如:人类
在java中用来描述具有共同性质的一组事物的自定义的复合数据类型—类。
复合数据类型的本质—【根据自己的需求制作自己需要的数据类型的模式/规则/公式】
4.2.如何编写一个Java类?
通过class关键字来创建一个类
例如:
public class Hello{
}
public—访问限制修饰符【对类的访问权限】
class—创建类的关键字【类的标志】
Hello–类名【首字母大写】
{}----类体
格式:
访问限制修饰符 class 类名{}
例如:
public class Student{ }
class User{ }
4.3.Java类中可以编写什么?
描述一组事物的共同性质
杯子–(名字–形状–大小–颜色–装东西)
名字,形状,大小,颜色-----基本属性
装东西—基本功能
通过事物的基本属性和基本功能来描述具有共同性质的一组事物。
基本属性------变量
基本功能-----方法
变量–是用来在类中描述事物的基本属性
方法–是用来在类中描述事物的基本功能
4.4.Java类中变量的分类及其基本特征?
变量—保存数据
1 . 数据类型【不一定就是之前的基本数据类型,也有可能是自定义的复合数据类型】
2 . 变量名称【合法标识符–全字母小写】
3 . 初始值
4 . 作用域
按照在类中编写变量的位置划分:
1 . 成员变量【全局变量】—类中方法外
1 . 可以使用访问限制修饰符,也可以不使用。
2 . 可以不用赋予初始值,系统自动赋予默认值,也可以根据需要自己设置一个初始值。
3 . 可以在本类中的任意一个方法中被使用
2 . 局部变量-------------方法里/方法参数
1 . 不能使用访问限制修饰符。
2 . 必须设置初始值
3 . 只能在本方法中使用。
例如:
public class Student1{
public int stuid1; //可以使用访问限制修饰符
int stuid2; //也可以不使用限制修饰符[缺省的访问限制修饰符]
public String stuname1; //可以不用赋予初始值,系统自动赋予默认值
public String stuname2="zhangsan";//也可以根据需要自己设置一个初始值。
//成员变量【全局变量】---可以在本类中的任意一个方法中被使用
public void testMethod1(){
System.out.println("stuid1=="+stuid1);
System.out.println("stuname2=="+stuname2);
}
public void testMethod2(){
System.out.println("stuid1=="+stuid1);
System.out.println("stuname2=="+stuname2);
}
//......
public void testMethod_n(){
System.out.println("stuid1=="+stuid1);
System.out.println("stuname2=="+stuname2);
}
}
public class TestMain{
public static void main(String args[]){
Student1 stu1=new Student1();
stu1.testMethod1();
stu1.testMethod2();
}
}
4.5.什么是成员变量的隐藏?
在同一个类中成员变量与某一个方法中的局部变量的名称相同,这是我们在方法中使用这个成员变量的时候,得到的结果是局部变量的值,此时就是方法中的局部变量将类中成员变量的值隐藏了,这就是成员变量的隐藏。
例如:
public class User{
//成员变量
public String username=”zhangsan”;
public void testMethod1(){
//局部变量
char username=’A’;
//成员变量的隐藏
//成员变量的隐藏与变量数据类型无关,只与变量名称有关。
System.out.println(“username==”+username); //username==A
//如果我们需要强制使用被隐藏的成员变量,该怎么办?
//通过this访问被隐藏的成员变量
System.out.println(“username==”+this.username); //username==zhangsan
}
}
4.6.静态成员变量与实例变量的区别?
静态成员变量与实例变量----都是成员变量【全局变量】
1 .可以使用访问限制修饰符,也可以不使用。
2 .可以不用赋予初始值,系统自动赋予默认值,也可以根据需要自己设置一个初始值。
3 .可以在本类中的任意一个方法中被使用
成员变量【全局变量】可以分为2种
按照成员变量【全局变量】是否使用static关键字
静态成员变量【类变量】—使用static关键字修饰的成员变量【全局变量】
实例变量—没有使用static关键字修饰的成员变量【全局变量】
static关键字—静态的—》提前分配存储数据的内存空间
没有使用static关键字修饰的元素,是在程序运行时分配存储数据的内存空间。
使用static关键字修饰的元素,是在程序运行前分配存储数据的内存空间。
例如:
public class TestClass{
public int classid=1001; //实例变量
public static String classname=”java班”; //静态成员变量【类变量】
static String classcode=”20200728”;//静态成员变量【类变量】}
区别:
成员变量【全局变量】
静态成员变量【类变量】 | 实例变量 |
---|---|
有static 关键字修饰 | 没有static 关键字修饰 |
程序运行前分配数据的内存空间【早】 | 程序运行时分配数据的内存空间【晚】 |
可以在多个同类对象之间共享数据值 | 不能在多个同类对象之间共享数据值 |