赞
踩
方法重载:简单说就是一个类中可以同时存在多个同名的方法,但要求同名方法中的参数列表不同
public class test{ public static void main(String[] args) { test1 t = new test1(); t.p(); //无参数p方法! t.p(1); //一个参数p方法! t.p(1,2); //两个参数p方法! t.p(1,3.0); //一个int形参一个double形参的p方法! } } class test1{ public void p() { System.out.println("无参数p方法!"); } public void p(int x) { System.out.println("一个参数p方法!"); } public void p(int x,int y) { System.out.println("两个参数p方法!"); } public void p(int x,double y) { System.out.println("一个int形参一个double形参的p方法!"); } }
本节示例
定义一个类,重载方法max,返回两个int的最大值,返回两个double的最大值,返回三个double的最大值
public class test{ public static void main(String[] args) { test1 t = new test1(); //方法一 System.out.println(t.max(5,6)); //方法二 System.out.println(t.max(3.0,2.4)); //方法三 System.out.println(t.max(7.8,6.2,20.1)); } } class test1{ public int max(int x,int y) { //这里使用三元运算符 return x>y?x:y; } public double max(double x,double y) { return x>y?x:y; } public double max(double x,double y,double z) { double max1 = x>y?x:y; return max1>z?max1:z; } }
基本介绍:对于重载方法功能相等,但参数不同就可以使用可变参数进行优化
注意事项
示例
public class test{ public static void main(String[] args) { test1 t = new test1(); int arr[] = {1,2,3}; int s = t.sums(5,arr); System.out.println(s); // 11 } } class test1{ public int sums(int num, int arr[]){ for (int i = 0 ; i<arr.length ; i++) { num +=arr[i]; } return num; } }
全局变量
局部变量
注意事项
构造方法又叫构造器(constructor),是类的一种特殊的方法,它的主要作用是完成对新对象的初始化
语法格式
[修饰符] 方法名(形参列表){
方法体;
}
public class test{ public static void main(String[] args) { //在创建对象是,类中构造方法将被调用,并且可以直接传值 Person penson = new Person("zhangsan",20); System.out.println(penson.name); //zhangsan System.out.println(penson.age); //20 } } class Person{ String name; int age; //有参构造方法 public Person(String pNmae, int pAge){ name = pNmae; age = pAge; } }
public class test{ public static void main(String[] args) { //一个参数,另一个参数有默认值 Person penson = new Person("zhangsan"); //两个参数 Person penson1 = new Person("lisi",20); System.out.println(penson.name+" "+penson.age); //zhangsan 0 System.out.println(penson1.name+" "+penson1.age); //lisi 20 } } class Person{ String name; int age; //有两个参构造方法 public Person(String pNmae, int pAge){ name = pNmae; age = pAge; } //有一个参构造方法 public Person(String pNmae){ name = pNmae; } } class Dog{ /* 无参构造器,系统会自动创建,创建对象的时候也会调用这个无参构造方法 只是我们看不见,但是确实有 Dog(){ } */ }
Dog中的无参构造可以通过,找到java文件路径打开cmd,输入javap Dog.class查看到其中的无参构造方法
为什么要学习this关键字
案例引入:
public class test{ public static void main(String[] args) { Person person = new Person("zhangsan",20); person.p(); } } class Person{ String name; int age; public Person(String dName,int dAge){ name = dName; age = dAge; } /* 如果想把dName换成name,dAge换成age,则会引起作用域的一个问题 下面这种情况就会出现name=name,都是局部变量的name,而全局变量name为null,age为0 如果想像下面这写,则需要用this */ //public Person(String name,int age){ // name = name; // age = age; //} public void p(){ System.out.println(name+" "+age); } }
this是指java虚拟机中会给每个对象分配this,代表当前对象
public class test{ public static void main(String[] args) { Person person = new Person("zhangsan",20); person.p(); } } class Person{ String name; int age; //功能与以上代码一样,this.name = name;则与上面name = dName等价 public Person(String name,int age){ this.name = name; this.age = age; } public void p(){ System.out.println(name+" "+age); } }
public class test{ public static void main(String[] args) { Person person = new Person("zhangsan",20); person.p(); } } class test1{ public void t1(){ System.out.println("我是t1"); } public void t2(){ //调用本类中的t1方法,有两种,一种直接调用,另一种用this t1(); this.t1(); System.out.println("我是t2"); } }
public class test{ public static void main(String[] args) { new test1(); //test1(int x)构造器! test1()构造器! } } class test1{ public test1(){ this(2); System.out.println("test1()构造器!"); } public test1(int x){ System.out.println("test1(int x)构造器!"); } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。