标签:布尔值 作用域 多个 private jdk get string 描述 导致
面向过程与面向对象:
面向过程:是一种以过程为中心的编程思路,功能的每一块都是由自己来实现的
面向对象:是一种以对象为中心的编程思路,通过指挥对象实现具体的功能
面向对象的三条主线:
Java类及类的成员:属性,方法,构造器,代码块和内部类
面向对象的三大特征:封装型,继承性,多态性,(抽象性)
其他关键字:this,super,static,final,import等
类是对一类事物的描述,是抽象的、概念上的定义;
对象是实际存在的该类事物的每个个体,因而也称为实例(instance);
面向对象程序设计的重点是类的设计;类的设计,其实就是类的成员的设计。
public class PersonTest {
public static void main(String[] args) {
//创建Person 类的对象
Person p1 = new Person(); //【二】、创建Person 类的对象
//调用属性: 对象.属性
p1.name = "jankin"; //【三】、调用
p1.age = 22;
System.out.println("名字:"+p1.name+",年龄:"+p1.age);
//调用方法: 对象.方法
p1.talk("Chinese");
//************************ //【四】、每个对象都独立的拥有一套类的属性
Person p2 = new Person();
System.out.println(p2.name); //null
//************************ // 【五】、将变量保存的地址值给p3,导致p1和p3指向了对空间中的同一个实体
Person p3 = p1;
System.out.println(p3.name); //jankin
p3.age = 21;
System.out.println(p1.age); //21
}
}
class Person { //【一】 、创建类,设计类的成员
//属性
String name;
int age;
//方法
public void talk(String language){
System.out.println("我可以说"+language);
}
}
类中属性的使用
属性(成员变量 vs 局部变量)
成员变量:直接定义在类的一对{}内的变量
局部变量:声明在方法内方法参数,代码块、构造器内部的变量
1.相同点:
1.1 变量格式是一样的 【变量类型 变量名= 变量值】
1.2 先声明,后赋值
1.3 变量都有其对应的作用域
2.不同点:
2.1 在类中声明的位置的不同
属性(成员变量),直接定义在类的{}内
局部变量:声明在方法内,方法形参,代码块内,构造器形参内的变量
2.2 关于权限修饰符的不同
属性:可以在声明属性时,指定其权限,使用权限修饰符
常用的权限修饰符:private,public,缺省,protected
局部变量:不可以使用权限修饰符的
2.3 默认初始化值的情况
属性:类的属性,根据其类型,都是默认初始化值
整形:0
浮点型:0.0
布尔值:false
char:‘0‘或‘\u0000’
引用型:null
局部变量:没有默认初始化值
意味着,我们调用变量的时候,一定要显式赋值(不然会报错)
特别的形参调用的时候,我们赋值即可
2.4加载的位置不同
属性:加载在堆空间中(非start)
局部变量:加载在栈空间
局部变量不能使用权限修饰符
局部变量没有初始值
类中的方法:描述类应该具有的功能
1.举例
public void eat(){}
public void eat(int num){}
public String eat(){}
2.方法的声明
权限修饰符 返回值类型 方法名(形参列表){方法体}
3.说明:
3.1 关于权限修饰符
java规定的4种权限修饰符:private,public,缺省,protected
3.2 返回值:有返回值vs没有返回值
- 如果方法有返回值,则必须在方法声明的时候,指定返回值的类型。同时,方法中,需要使用return返回指定类型的变量或常量。
- 如果方法没有返回值,则方法声明时,使用void表示。通常,没有返回值的方法中就不需要使用return ,但是,如果使用的话,只能“return;”表示结束此方法的意思
3.3方法名:属于标识符,遵循标识符的规则和规范,“见名知意”
3.4形参列表:方法可以声明随意个形参,多个形参用“,”分格
3.5方法体:方法功能的实现
4.return 关键字的使用
> 使用范围:使用在方法体中
> 作用: 1.结束方法 2.针对有返回值类型的方法,返回“return 数据”
> 注意点:return关键字后面不能声明执行语句
5.方法的使用中,可以调用当前类中的属性或方法
> 特殊的:方法a中又调用方法a:称递归方法
> 方法中不能定义别的方法
对象数组的内存解析说明
引用类型的变量,只能存储2类值 (null和地址值)
匿名对象的使用
new Phone().sendEmail();
1.理解:我们建的对象,没有显式的赋给一个变量,即为匿名对象
2.特征,匿名对象只能调用一次.
public class InstanceTest {
public static void main(String[] args) {
PhoneMall mall = new PhoneMall();
mall.show(new Phone());
}
}
class PhoneMall{
public void show(Phone ph1){
ph1.price = 1999;
ph1.showPrice();
}
}
class Phone{
double price;
public void showPrice(){
System.out.println("手机价格为:"+price);
}
}
以上面的买手机为例
class PhoneMell{
public void show01(Phone p1){
p1.price = "1999元";
p1.show("优惠多多");
}
}
class Phone{
public String price;
public void show(){
System.out.println("手机价格:"+this.price);
}
public void show(String str){
System.out.println("手机价格:"+this.price + ";" + str);
}
}
jdk 5.0 新增的方法
具体使用:
1.可变个数的形参的格式:数据类型 ...变量名
2.当调用可变个数形参的时候,可以传任意个形参,包括0个,
3.可变个数形参的方法与本类中方法名相同,形参不同的方法之间构成重载
4.可变个数形参的方法与本类中方法名相同,形参类型也相同的 数组 之间不构成重载。可以说,二者不能共存
5.可变个数形参在方法的形参中,最多只能声明一个可变形参,并且只能放在最后
执行可变个数形参
public class zhTest {
public static void main(String[] args) {
zhTest z = new zhTest();
z.show("hello","world");
}
public void show(String str){
System.out.println(str);
}
public void show(String ...strs){
System.out.println("strs");
}
}
形参类型也相同的 数组,二者不能共存
形参:方法定义时,声明的小括号内的参数
实参:方法调用时,实际传递给形参的值
值传递机制:如果参数是基本数据类型,此时实参赋给形参的是实参真实储存的数值
果变量是引用数据类型,此时赋值的是变量所保存的数据的地址值
基本数据类型形参的值传递机制
引用数据类型形参的值传递机制
public static void main(String[] args) {
ZhTest test = new ZhTest();
int num = test.getSum(3);
System.out.println(num);
}
public int getSum(int n){
if(n == 1){
return 1;
}else{
return n + getSum(n-1);
}
}
标签:布尔值 作用域 多个 private jdk get string 描述 导致
原文地址:https://www.cnblogs.com/6ovo6/p/14916058.html