一些基础内容的使用细节(Java)

一些方法的使用细节和注意事项

访问修饰符:作用是控制方法使用的范围

四种:public protected 默认 private

方法调用细节

1.同一个类中的方法调用:直接调用即可。

2.跨类中的方法A类调用B类方法:需要通过对象名调用。比如 对象名.方法名(参数);

3.特别说明一下:跨类的方法调用和方法的访问修饰符相关

传参机制:引用类型传递的是地址(传递也是值,但是值是地址),可以通过形参影响实参

对象存在堆里 基本数据类型存放在堆里,引用数据类型在方法区。

调用方法 会在栈内开辟空间

递归 如果方法中使用的是引用类型变量(比如 数组、对象),就会共享该引用类型的数据。

方法重载的细节

1、方法名:必须相同

2、参数列表:必须不同(参数类型或个数或顺序,至少有一样不同,参数名无要求)

3、返回类型:无要求

public class OverLoad01{
	//编写一个main函数
	public static void main(String[] args){
		MyCalculator mc = new MyCalculator();
		System.out.println(mc.calculate(1,2));
		System.out.println(mc.calculate(1.3,2));
		System.out.println(mc.calculate(1,2.1));
		System.out.println(mc.calculate(1,2,5));
	}
}
class MyCalculator{
	//下面的四个calculate方法构成了重载
	public int calculate(int n1,int n2){
		return n1 + n2;
	}
	public double calculate(int n1,double n2){
		return n1 + n2;
	}
	public double calculate(double n1,int n2){
		return n1 + n2;
	}
	public int calculate(int n1,int n2,int n3){
		return n1 + n2 + n3;
	}
}

可变参数

java允许将同一个类中多个同名同功能但参数个数不同的方法,封装成一个方法。就可以通过可变参数实现

基本语法:

访问修饰符 返回类型 方法名 (数据类型… 形参名){

}

public class VarParameter01{
	//编写一个main函数
	public static void main(String[] args){
		HspMethod m = new HspMethod();
		System.out.println(m.sun(1,5,100));
	}
}
class HspMethod{
	//解读
	//1、 int... 表示接收的是可变参数,类型是int,既可以接收多个int(0-多)
	//2、 使用可变参数时,可以当作数组来使用,即nums可以当作数组
	//3、  求和则可以遍历nums求和
	public int sun(int... nums){
		//System.out.println("接收的参数个数=" + nums.length);
		int res=0;
		for(int i=0;i<nums.length;i++){
			res+=nums[i];
		}
		return res;
	}
}
可变参数的注意事项和细节

1、可变参数的实参可以为0个或任意多个

2、可变参数的实参可以为数组

3、可变参数的本质就是数组

4、可变参数可以和普通类型的参数一起放在形参列表,但必须保证可变参数在后面

5、一个形参列表中只能出现一个可变参数

作用域

1、属性和局部变量可以崇明,访问时遵循就近原则

2、在同一个作用域中,比如在同一个成员方法中,两个局部变量,不能重名

3、属性生命周期较长,伴随着对象的创建而创建,伴随着对象的死亡而死亡。局部变量,生命周期较短,伴随着他的代码块的执行而创建,伴随着代码块的结束而死亡,即在一次方法调用过程中。

4、作用域范围不同

全局变量/属性:可以被本类使用,或其它类使用(通过对象调用)

局部变量:只能在本类中对应的方法中使用

5、修饰符不同

全局变量/属性可以加修饰符

局部变量不可以加修饰符

this关键字使用细节

class Person{
	String name;
	int age;
	// this 用法
	public Person(String name , int age){
		//this.name this.age指的是当前对象(当前对象:创建好对象后,谁在调用这个构造器,this就是哪一个对象)的属性
		this.name = name;
		this.age = nge;
		//简单的说,哪个对象调用,this就代表哪个对象
	}
}

1、this关键字可以用来访问本类的属性、方法、构造器

2、this用于区分当前类的属性和局部变量

class T{
	String name = "jack";
	int num =10;
    public void f3(){
    	String name = "Smith";
    	//传统方式 就近原则
    	System.out.println("name=" + name +" " + "num=" + num);//Smith    10
    	//也可以使用this访问属性
    	System.out.println("name=" + this.name +" " + "num=" + this.num);//jack   10
    }

}

3、访问成员方法的语法:this.方法名(参数列表)

public class ThisDetail{
	//编写一个main函数
	public static void main(String[] args){
		//当new一个对象时,直接通过构造器指定名字和年龄
		Person p1 = new Person("smith" , 80);
		T t1 = new T();
		t1.f2();//运行结果 f2() 方法..
				//        f1() 方法..
				//        f1() 方法..
	}
}
class T{
	public void f1(){
		System.out.println("f1() 方法..");
	}
	public void f2(){
		System.out.println("f2() 方法..");
		//调用本类的 f1
	    //第一种方式
	    f1();
	    //第二种方式
	    this.f1();
	}
}

4、访问构造器语法:this(参数列表);注意只能在构造器中使用(即只能在构造器中访问另一个构造器)

访问构造器语法:this(参数列表);必须放在第一条语句

public class thisDetail{
	//编写一个main函数
	public static void main(String[] args){
		T t2 = new T();//运行结果  T(String name,int age) 构造器
		               //         T() 构造器
	}
}
class T{
	public T(){
		//这里去访问T(String name,int age) 构造器
		this ("jack",100);//放在第一条语句
		System.out.println("T() 构造器");
	}
	public T(String name,int age){
		System.out.println("T(String name,int age) 构造器");
	}
}

5、this不能在类定义的外部使用,只能在类定义的方法中使用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值