Learn java step by step day12

本文详细介绍了Java中的方法重载(Overload)、可变参数(Variable Parameters)以及构造器的使用。实例演示了如何在`Methods`类中实现方法的多重定义,并展示了如何在`OverLoad`类中利用这些特性。还涉及到了对象初始化、This关键字及练习案例,如数组操作、比较和计算功能。
摘要由CSDN通过智能技术生成

1.Overload

 

public class OverLoad{
	public static void main(String[] args) {
		Methods tool = new Methods();
		tool.Method(8);
		tool.Method(8, 9);
		tool.Method("666");
	}
}
class Methods{
	public void Method(int n1){
		System.out.println(n1 * n1);
	}
	public void Method(int n1, int n2){
		System.out.println(n1 * n2);
	}
	public void Method(String n1){
		System.out.println(n1);
	}
}

public class OverLoad{
	public static void main(String[] args) {
		Methods tool = new Methods();
		tool.max(8, 9);
		tool.max(8.23, 9.97);
		tool.max(4.16, 1.89, 5.17);
	}
}
class Methods{
	public void max(int n1, int n2){
		System.out.println(n1 > n2 ? n1 : n2);
	}
	public void max(double n1, double n2){
		System.out.println(n1 > n2 ? n1 : n2);
	}
	public void max(double n1, double n2, double n3){
		System.out.println((n1 > n2 ? n1 :n2) > n3 ? (n1 > n2 ? n1 :n2) : n3);
	}
}

2.Variable Parameters

public class VarParameter{
	public static void main(String[] args) {
		Methods tool = new Methods();
		tool.sum();
	}
}
class Methods{
	//1.int... 表示接收的是可变参数,类型是int,即可以接收多个int
	//2.使用可变参数时,可以当作数组来使用 即nums 可以当作数组
	public int sum(int... nums){
		System.out.println("接收的参数个数 = " + nums.length);
		int res = 0;
		for(int i = 0; i < nums.length; i++){
			res += nums[i];
		}
		return res;
	}
}


3.Scope 


 4.Constructor

public class Constructor{
	public static void main(String[] args) {
		//当我们new 一个对象时,直接通过构造器指定名字和年龄
		Person p1 = new Person("chubby", 18);
		System.out.println("p1的信息如下");
		System.out.println("p1对象name = " + p1.name);//chubby
		System.out.println("p1对象age = " + p1.age);//18
	}
}

//在创建人类的对象时,就直接指定这个对象的年龄和姓名
//
class Person{
	String name;
	int age;
	//构造器
	//1.构造器没有返回值, 也不能写void
	//2.构造器的名称和类名Person一样
	//3.(String pName, int pAge) 是构造器形参列表,规则和成员方法一样
	public Person(String pName, int pAge){
		name = pName;
		age = pAge;
		System.out.println("构造器被调用 完成对象属性的初始化");
	}
}

 Detail

public class ConstructorDetail{
	public static void main(String[] args) {
		Person p1 = new Person("chubby", 18);//第一个构造器
		Person p2 = new Person("Charon");//第二个构造器
	}
}

//在创建人类的对象时,就直接指定这个对象的年龄和姓名
//
class Person{
	String name;
	int age;
	//第一个构造器
	public Person(String pName, int pAge){
		name = pName;
		age = pAge;
	}
	//第二个构造器
	public Person(String pName, int pAge){
		name = pName;
	}
}

 

流程分析:

1.在方法区中加载Person类(Person.class),只加载一次

2.在堆中new一个对象(分配地址),对象下有两个属性(age,name)

3.完成对象初始化

[3.1 默认初始化 age = 0, name = null]

[3.2 显式初始化 age = 90, name = null]

[3.3 构造器初始化 age = 20, name = 小倩(字符串保留在常量池中,有其对应地址)]

4.把堆中的对象(地址)返回给 p(p是对象名 / 对象的引用)


5.This

 


6.Exercise

public class Exercise01{
	public static void main(String[] args) {
		double[] arr = {110.2, 50.6, 81.6, 997.2};
		A1 a1 = new A1();
		System.out.println(a1.max(arr));
	}
}

class A1{
	//求数组最大值
	public double max(double[] arr){
		double max = arr[0];
		for(int i = 1; i < arr.length; i++){
			if(arr[i] > max){
				max = arr[i];
			}
		}
		return max;
	}
}
import java.util.Scanner;
public class Exercise02{
	public static void main(String[] args) {
		Scanner myscanner = new Scanner(System.in);
		String[] arr = {"chubby", "charon", "good"};
		A02 a1 = new A02();
		System.out.println("请输入你要查找的元素");
		String input = myscanner.next();
		System.out.println(a1.find(arr, input));
	}
}

class A02{
	//查找数组元素,找到了返回所言,没找到返回 -1
	public int find(String[] arr, String input){
		for(int i = 0; i < arr.length; i++){
			if(arr[i].equals(input)){
				return i;
			}
		}
		return -1;
	}
}
import java.util.Scanner;
public class Exercise03{
	public static void main(String[] args) {
		Scanner myscanner = new Scanner(System.in);
		Book a1 = new Book();
		System.out.println("请输入书本的价格");
		double input = myscanner.nextDouble();
		System.out.println(a1.updatePrice(input));
	}
}

class Book{
	//查找数组元素,找到了返回所言,没找到返回 -1
	public double updatePrice(double input){
		if(input > 150){
			input = 150;
			return input;
		}else if(input > 100 && input <= 150){
			input = 100;
			return input;
		}else return input;
	}
}
import java.util.Scanner;
public class Exercise04{
	public static void main(String[] args) {
		Scanner myscanner = new Scanner(System.in);
		A03 a1 = new A03();
		int[] arr = {1, 2, 3};
		int[] arr01 = a1.copeArr(arr);
		for(int i = 0; i < arr.length; i++) {
			System.out.print(arr[i] + " ");
		}
		arr01[0] = 5;//测试是否为新数组
		for(int i = 0; i < arr.length; i++) {
			System.out.print(arr01[i] + " ");
		}
	}
}

class A03{
	//复制一个新数组
	public int[] copeArr(int[] arr){
		int[] newarr = new int[arr.length];
		int[] arr01 = new int[arr.length];
		for(int i = 0; i < arr.length; i++){
			newarr[i] = arr[i];
		}
		arr01 = newarr;
		return arr01;
	}
}
import java.util.Scanner;
public class Exercise05{
	public static void main(String[] args) {
		Scanner myscanner = new Scanner(System.in);
		Circle c1 = new Circle();
		System.out.println("请输入你要求的园的半径:");
		c1.r = myscanner.nextDouble();
		System.out.println(c1.r);
		System.out.print("周长为:");
		c1.c(c1.r);
		System.out.print("面积为:");
		c1.s(c1.r);
	}
}

//定义一个园类Circle
class Circle{
	double r;
	//求周长
	public void c(double r){
		double c = 2 * r * 3.14;
		System.out.println(c);
	}
	//求面积
	public void s(double r){
		double s = r * r * 3.14;
		System.out.println(s);
	}
}
import java.util.Scanner;
public class Exercise{
	public static void main(String[] args) {
		Scanner myscanner = new Scanner(System.in);
		System.out.println("请输入你要求的两个数:");
		double num1 = myscanner.nextDouble();
		double num2 = myscanner.nextDouble();
		Cale c1 = new Cale();
		Cale c2 = new Cale();
		c1.addition(num1, num2);
        c1.subtraction(num1, num2);
        c2.multiplication(num1, num2);
        c2.division(num1, num2);//可以加入switch让用户进行选择
	}
}

//定义一个计算类
class Cale{
	//求和
	public void addition(double num1, double num2){
		double sum = num1 + num2;
		System.out.println(sum);
	}
	//求差
	public void subtraction(double num1, double num2){
		double difference = num1 - num2;
		System.out.println(difference);
	}
    //求积
    public void multiplication(double num1, double num2){
    	double product = num1 * num2;
    	System.out.println(product);
    }	
    //求商
    public void division(double num1, double num2){
    	if (num2 == 0) {
    		System.out.println("除数不能为0");
    	}else {
    	double quotient = num1 / num2;
    	System.out.println(quotient); 	
    	}
    }
}
import java.util.Scanner;
public class Exercise07{
	public static void main(String[] args) {
		Scanner myscanner = new Scanner(System.in);
		Dog dog1 = new Dog();
		dog1.show("双喜", "黄", 2);
	}
}

//定义一个Dog类
class Dog{
	String name;
	String color;
	int age;
	public void show(String name, String color, int age){
		this.name = name;
		this.color = color;
		this.age = age;
		System.out.println("小狗叫" + name + "今年" + age + "岁" + "是" + color + "色");
	}
}
import java.util.Scanner;
public class Exercise08{
	public static void main(String[] args) {
		Scanner myscanner = new Scanner(System.in);
		
	}
}

class Employee{
	String name;
	int age;
	char gender;
	String job;
	double sal;
	public Employee(String job, double sal){
		this.job = job;
		this.sal = sal;
	}
	public Employee(String name, char gender, int age){
		this.name = name;
		this.gender = gender;
		this.age = age;
	}
	public Employee(String job, double sal, String name, char gender, int age){
		this(name, gender, age);
		this.job = job;
		this.sal = sal;
	}
}

The knowledge learning in the article comes from:

【零基础 快速学Java】韩顺平 零基础30天学会Java_哔哩哔哩_bilibiliicon-default.png?t=M276https://www.bilibili.com/video/BV1fh411y7R8?p=32

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值