Java学习第二十五天<方法重载><可变参数><作用域基本使用>
-
方法名必须相同
-
形参列表(类型,个数,顺序至少一样)必须不同,否则重定义
-
返回类型无要求
package chapter06.D6方法重载;
?
public class OverLoadExercise {
public static void main(String[] args) {
Methods method = new Methods();
method.m(10);//100
method.m(10,20);
method.m("征途");
}
}
class Methods{
public void m (int n){
System.out.println("平方="+(n*n));
}
public void m (int n1,int n2){
System.out.println("相乘="+(n1*n2));
}
public void m (String str){
System.out.println("传入的str="+str);
}
}
package chapter06.D6方法重载;
?
public class OverloadExercise2 {
public static void main(String[] args) {
Methods2 methods2 = new Methods2();
System.out.println(methods2.max(10,24));
System.out.println(methods2.max(10,24,21.4));//自动转化
}
}
class Methods2{
public int max(int n1,int n2){
return n1>n2?n1:n2;
}
public double max(double n1,double n2){
return n1>n2?n1:n2;
}
public double max(double n1,double n2,double n3){
double max1=n1>n2?n1:n2;
return max1>n3?max1:n3;
}
}
可变参数
package chapter06.D7可变参数;
?
public class VarParameter {
public static void main(String[] args) {
Method m = new Method();
System.out.println(m.sum(1,5,6));
?
}
}
class Method{
public int sum(int...nums){//可变参数,可接受多个int nums当做数组来使用
/* System.out.println("接收的参数个数="+ nums.length);
return 25;//return几都行
?
*/
int res=0;
for (int i = 0; i < nums.length; i++) {
res+=nums[i];
}
return res;
}
}
package chapter06.D7可变参数;
?
public class VarParameterDetail {
public static void main(String[] args) {
int[]arr={1,2,3};
T t1 = new T();
t1.f1(arr);
?
}
}
class T{
public void f1(int...nums){//可变参数本质就是数组
System.out.println("长度="+ nums.length);
}
public void f2(String str,double...nums){//可变参数可以和普通类型参数一起放在形参列表,但可变参数要在后,并只能出现一次
System.out.println("长度="+ nums.length);
}
}
package chapter06.D7可变参数;
?
public class VarParameterExercise {
public static void main(String[] args) {
Method2 hm = new Method2();
System.out.println(hm.showScore("milan",90.1,80.0));
System.out.println(hm.showScore("terry",90.1,80.0,60.2,75.6));
?
}
}
class Method2{
public String showScore(String name,double...scores){
double totalScore=0;
for (int i = 0; i totalScore +=scores[i];
}
return name+" 有 "+scores.length+"门课的成绩总分为="+totalScore;
}
}
作用域基本使用
package chapter06.D8作用域基本使用;
?
public class VarScope {
public static void main(String[] args) {
Cat cat = new Cat();
cat.cry();
cat.eat();
}
?
}
class Cat{
int age=10;//全局变量(属性,可赋值,不赋值为默认值),作用域为Cat整个类体
int salary;
{
int num=100;//局部变量,无默认值,作用在代码块中
}
?
public void cry(){
int n=10 ;//局部变量,必须赋值,作用域在cry方法中
String name="jack";//局部变量
System.out.println("在cry中使用属性 age="+age);
System.out.println("cry局部变量 n="+n);
}
public void eat(){
System.out.println("在eat中使用属性 age="+age);//name,num就不能用
System.out.println("在eat中使用属性 salary="+salary);
}
}
package chapter06.D8作用域基本使用;
?
public class VarScopeDetails {
public static void main(String[] args) {
Person p1 = new Person();
p1.say();//当执行say方法时 say方法的局部变量如name会创建,say执行完后name局部变量就销毁,但属性(全局变量)还可用
System.out.println(p1.name);
T t = new T();
t.test();
t.test2(p1);
?
?
}
}
class Person{
public int age=20;//属性可以加修饰符 protected private
String name="jack";
public void say(){
//细节 属性和局部变量可以重名,访问时遵循就近原则
String name = "king";//局部变量不能加修饰符
System.out.println("say()name="+name);//king
}
public void hi(){
String address="北京";
String name="上海";
?
}
}
class T{
public void test(){
Person p1 = new Person();
System.out.println(p1.name);//new别的类以后可以使用别的类属性
}
public void test2(Person p){
System.out.println(p.name);//也可传别的类的对象来使用属性
}
}