内部类 常用API

一、形式参数和返回值的问题
类作为形式参数和返回值
1)形式参数是类类型,实际参数传递是该类或者其子类对象
2)返回值是类类型,实际返回的是该类或者其子类对象

接口作为形式参数和返回值
	1)接口作为形式参数,实际参数应该传递接口的实现类对象
	2)接口作为返回值类型,实际返回的是接口的实现类对象

二、内部类
1. 成员内部类
位置:在类中方法外
public class Outer {
int num=30;
//成员内部类
public class Inner{
int num=20;
public void show(){
int num=10;
System.out.println(“Inner…show…”+num); //10
System.out.println(“Inner…show…”+this.num); //20
System.out.println(“Inner…show…”+Outer.this.num); //30
}
}
}
//测试类
public class Demo1 {
public static void main(String[] args) {
//格式:外部类.内部类 变量名=new 外部类().new 内部类();
Outer.Inner in=new Outer().new Inner();
in.show();
}
}

2.局部内部类 【了解】
	位置:方法中
	public class Outer{
		public void method(){
			//局部内部类:方法中的类,只在方法中有效
			class Inner{
				public void show(){
					System.out.println("Inner...show");
				}
			}
		
			//使用Inner创建对象
			Inner in=new Inner();
			in.show();
		}
	}

3.匿名内部类【重要】
	1)前提:抽象父类/接口:
	2)格式:
		new 抽象父类/接口(){
			复写抽象方法
		}
	3)本质:匿名内部类的本质是接口/抽象类的子类对象
	案例演示:
		//1)前提:抽象父类/接口:
		public abstract class Animal {
			public abstract void eat();
		}
	
		//饲养员类
		public class Feeder {
			//养动物,Animal 作为参数,可以接受任意的子类对象
			public void feed(Animal a){
				a.eat();
			}
		}
		
		//测试类
		public class Demo{
			public static void main(String[] args){
				Feeder f=new Feeder();
				//养猫
				f.feed(new Animal() {
					@Override
					public void eat() {
						System.out.println("猫吃小鱼");
					}
				});
			}
		}

二、常用类的API
1.Object类
理解:Object是所有类的父类,任何一个类都直接或者间接的继承Object
public String toString()
把对象转换为字符串(默认格式: “类名@地址值”)
快捷键:【alt+insert】建议子类重写此方法,把对象的属性值作为字符串返回

	public boolean equals(Object obj)
		用来比较两个对象是否相等(默认按照地址值进行比较)
		快捷键:【alt+insert】建议子类复写此方法,比较对象的属性值
	
	API中有些类已经复写toString和equals方法,比如String类、ArrayList类...
	

2.Arrays类
	理解:Arrays是专门用于操作数组的工具类,提供了排序、查找等方法
	public String toString(int[] array)
		把数组按照特点格式转换为字符串  格式: [元素1,元素2....]
	
	public boolean sort(int[] array)
		对数组进行排序
	
	public static int binarySearch(int[] a, int key)  
		按照二分查找法查找元素对应的索引,【注意:二分查找之前一定要先对元素排序】
		如果找不到,返回一个负数
	
	案例代码:
		int[] array={45,12,78,56,67,98};
		//把数组转换为字符串
		System.out.println("排序前:"+Arrays.toString(array));
		//排序
		Arrays.sort(array);
		//把数组转换为字符串
		System.out.println("排序后:"+Arrays.toString(array));
		//查找56出现的索引
		int index = Arrays.binarySearch(array, 56);
		System.out.println(index);

5.Math类
	理解:Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数
	public static double abs(double a)  
		求一个数的绝对值(正数和负数的绝对值都是正数)
	public static double max(double a, double b) 
		求两个数的最大值
	public static double min(double a, double b)  
		求两个数的最小值
	public static double pow(double a, double b)  
		求a的b次幂
	public static double random()  	
		生成随机数,范围[0,1)的小数
	public static long round(double a)  
		求一个小数的四舍五入值	
	public static double ceil(double a)  
		向上取整 (3.9-->4.0)、(3.1-->4.0)
	public static double floor(double a)  
		向下取整 (3.9-->3.0)、(3.1-->3.0)

4.System类
	public static void exit(int status)  
		退出虚拟机

	public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) 
      复制一个数组中的元素到另一个数组中,从指定的位置开始,到指定的位置结束
	  参数解释:
		src - 源数组。
		srcPos - 源数组中的起始位置。
		dest - 目标数组。
		destPos - 目标数据中的起始位置。
		length - 要复制的数组元素的数量。 
		
		代码演示:
		int[] arrayA={10,20,30,40,50};
		int[] arrayB=new int[5];
		//从arrayA数组中把20,30,40复制到arrayB数组中,从0索引开始接收
		System.arraycopy(arrayA,1,arrayB,0,3);
		
	public static long currentTimeMillis()  
		获取当前时间的毫秒值
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值