属性(成员变量)和局部变量
class User{
//属性,直接定义在类的一对{}内
String name;
int age;
//局部变量:定义在方法内、方法形参、代码块内、构造方法形参、//构造器内部的变量
public void learn(String type){//方法括号内的叫做形参
System.out.println("我们爱上"+type+"课")
}
public void eat(){
String name="jj";//定义在方法内部也是形参 局部变量
}
}
根据上面的例子发现
局部变量和属性的特点
相同点
-
都有各自的作用域
-
格式都是 数据类型 变量名 = 值
-
先声明,后使用
不同点:
-
在类中声明的位置不同
属性直接定义在类中
局部变量定义的范围是在方法中,构造方法内部,代码块(函数内部)范围比属性要小
-
属性声明时可以使用权限修饰符(定义权限) 体现封装性
private String 缺省 protected
private int age;
而局部变量禁止使用修饰符
-
关于默认初始化值的不同
属性可以有默认初始化值
整型:byte int short short 0
浮点型 double float 0.0
字符型:char 0
布尔型:boolean false
引用数据类型:类 数组 接口 String : null
局部变量没有初始化值
-
补充:几个概念的使用说明
- 属性 = 成员变量=field=域、字段
- 方法 =成员方法 = 函数=mehtod
- 创建类的对象 = 类的实例化=实例化类
万事万物皆对象
类:类是一类事物的描述,是抽象的,概念上的定义
对象:对象是实际存在的该类事物的每个个体,因而被称为实例
理解万事万物皆对象:
将功能、结构封装到类中,通过类的实例化,调用类的功能结构
涉及到前端html后端sql语言,在java层面都定义为对象
方法重载 overload
重载:类中允许多个同名方法,返回值类型相同,前提是必须参数列表不同(顺序,数据类型,参数类型)
在对象调用方法时,如何确定调用的是哪个方法
1:先看方法名
2:由于方法的重载,看完方法名再看参数列表
public class User{
//在同一个类中,方法名相同,返回类型相同,参数列表不同,重载
public void shit(){
}
public void shit(String n , int s){
}
//返回值类型不同,报错
public int shit(String s){
return 1;
}
}
方法参数的值传递机制
-
方法:必须由其所在类或对象调用才有实际的意义,方法含有参数
-
形参:方法声明时的参数
-
实参:方法调用时实际传给形参的实际值
-
-
java实参值如何传入方法呢?
java方法参数传递方式只有一种:值传递
1:形参是基本数据类型时:实参的值是通过“数据值”传递
2:形参是引用数据类型时:实参的值是通过“地址值”传递
class N1{
//值的传递并不会改变其他值
n=20;
m=n
syso(m,n);//20 20
n=21;
syso(m,n)//20 21
Order o1 = new Order();
o1.num=12;
//这里指的是他们的地址值相同
//而不是他们的值相同,只有两者中用谁改变了地址值,两者都会同时改变
Order o2 = o1;
}
基本数据类型的值传递


以上例子说明如果实参是基本数据类型,实参赋给形参的是实参真实存储的数据值
引用数据类型的值传递
1:给对象中的值赋值




如果参数是引用数据类型,实参赋予给形参的是变量保存的地址值
网友评论