匿名对象的说明与匿名对象作为方法的参数和返回值
匿名对象
概念
创建对象时,只有创建对象的语句,却没有把对象地址值赋值给某个变量。虽然是创建对象的简化写法,但是应用
场景非常有限。
匿名对象 :没有变量名的对象。
格式:
day04类
package demox.demopro; public class day04 { String name; public void showName(){ System.out.println("我叫"+name); } }
day04pro
package demox.demopro; /* 创建对象的标准格式: 类名称对象名= neww类名称(); 匿名对象就是只有右边的对象,没有左边的名字和赋值运算符。new类名称(; 注意事项:匿名对象 只能使用唯一的一次,下次再用不得不在创建一个新对象, 使用建议:如果确定有一个对象只需要使用唯一的一次,就可以用匿名对象 */ public class day04pro { public static void main(String[] args) { day04 one = new day04(); one.name ="高圆圆"; one.showName(); System.out.println("********************"); new day04().name = "赵又廷"; new day04().showName(); } }
new 类名(参数列表);
举例:
new Scanner(System.in);
应用场景
1. 创建匿名对象直接调用方法,没有变量名。
new Scanner(System.in).nextInt();
2. 一旦调用两次方法,就是创建了两个对象,造成浪费,请看如下代码。
new Scanner(System.in).nextInt();
new Scanner(System.in).nextInt();
小贴士:一个匿名对象,只能使用一次。
3. 匿名对象可以作为方法的参数和返回值
作为参数:
class Test { public static void main(String[] args) { // 普通方式 Scanner sc = new Scanner(System.in); input(sc); //匿名对象作为方法接收的参数 input(new Scanner(System.in)); } public static void input(Scanner sc){ System.out.println(sc); } }
作为返回值
class Test2 { public static void main(String[] args) { // 普通方式 Scanner sc = getScanner(); } public static Scanner getScanner(){ //普通方式 / /Scanner sc = new Scanner(System.in);// return sc; //匿名对象作为方法返回值 return new Scanner(System.in); } }
package demox.demopro; import java.util.Scanner; public class day05 { public static void main(String[] args) { // //普通使用方式 // Scanner scanner = new Scanner(System.in); // int nextInt = scanner.nextInt(); // //匿名对象方式 // int num = new Scanner(System.in).nextInt(); // System.out.println("输入的是:"+num); // 使用一般写法 // Scanner scanner = new Scanner(System.in); // methodParam(sc); // methodParam(new Scanner(System.in)); Scanner sc = methodReturn(); int nextInt = sc.nextInt(); System.out.println("输入的是"+nextInt); } public static void methodParam(Scanner sc){ int nextInt = sc.nextInt(); System.out.println("输入的是"+nextInt); } public static Scanner methodReturn(){ // Scanner scanner = new Scanner(System.in); // return scanner; return new Scanner(System.in); } }