形参和返回值

抽象类名作为形参和返回值

  • 方法的形参是抽象类名,其实需要的是该抽象类的子类对象
  • 方法的返回值是抽象类名,其实返回的是该抽象类的子类对象

接口名作为形参和返回值

  • 方法的形象是接口名,其实需要的是该接口的实现类对象
  • 方法的返回值是接口名,其实返回的是该接口的实现类对象

内部类

内部类概述

  • 内部类:就是在一个类中定义一个类
  • 内部类的定义格式

格式:

   public class 类名{
修饰符 class 类名{
}
}

范例:

    public class Outer{
public class Inner{
}
}

成员内部类

按照内部类在类中定义的位置不同,可以分为如下两种形式

  • 在类的成员位置:成员内部类
  • 在类的局部位置:局部内部类

成员内部类,外界如何创建对象使用呢?

  • 格式:外界类名.内部类名 对象名 = 外部类对象.内部类对象;
  • 范例:Outer.Inner oi = new Outer().newInner();
    //成员内部类
public class Outer {
private int num = 10; /*
public class Inner {
public void show(){
System.out.println(num);
}
}
*/
private class Inner {
public void show(){
System.out.println(num);
}
} public void method(){
Inner i = new Inner();
i.show();
}
}
    //测试类
public class InnerDemo {
public static void main(String[] args){
// Outer.Inner oi = new Outer().new Inner();
// oi.show();//10 Outer o = new Outer();
o.method();//10
}
}

局部内部类

局部内部类是在方法中定义的类,所以外界是无法直接使用,需要在方法内部创建对象并使用该类可以直接访问外部类的成员,也可以访问方法内的局部变量

    //局部内部类
public class Outer {
private int num = 10; public void method(){
int num2 = 20;
class Inner{
public void show(){
System.out.println(num);
System.out.println(num2);
}
} Inner i = new Inner();
i.show();
    //测试类
public class OuterDemo {
public static void main(String[] args){
Outer o = new Outer();
o.method();
//10
//20
}
}

匿名内部类

前提:存在一个类或者接口,这里的类可以是具体类也可以是抽象类

  • 格式:
   new 类名或者接口名(){
重写方法;
}
  • 范例:
    new Inter(){
public void show(){
}
}

本质:是一个继承了该类或则该接口的子类匿名对象

    public class Outer {
public void method() {
/*
new Inter() {
@override
public void show() {
System.out.println("匿名内部类");
}
}.show();
*/
Inter i = new Inter(){
@override
public void show() {
System.out.println("匿名内部类");
}
};
//多次调用
i.show();
i.show();
}
}
    public interface Inter {
void show();
}
    public class OuterDemo {
public static void main(String[] args){
Outer o = new Outer();
o.method();
}
}

常用API

Math类概述

包含执行基本数字运算的方法

Math类的常用方法

方法名 说明
public static int abs(inta) 返回参数的绝对值
public static double ceil(double a) 返回>或=参数的最小double值,等于一个整数
public static double floor(double a) 返回<或=参数的最大double值,等于一个整数
public static int round(float a) 按照四舍五入返回最接近参数的int
public static int max(int a,int b) 返回int值中较大值
public static int min(int a,int b) 返回int值中较小值
public static double pow(double a,double b) 返回a的b次幂的值
public static double random() 返回值为double的正值[0.0,1.0)

System类概述

System包含几个有用的类字段和方法,它不能被实例化

System类的常用方法

方法名 说明
public static void exit(int status) 终止当前运行的Java虚拟机,非零表示异常终止
public static long currentTimeMills() 返回当前时间(以毫秒为单位)

Object类的概述

Object是类层次结构的根,每个类都可以将Object作为超类。所有类都直接或者间接的继承自该类

方法名 说明
public String toString 返回对象的字符串表示形式。建议所有子类重写该方法,自动生成
public boolean equals(Object obj) 比较对象是否相等。默认比较地址,重写可以比较内容,自动生成

冒泡排序

  • 如果有N个数据进行排序,总需要比较N-1次
  • 每一次比较完毕,下一次的比较就会少一个数据参与
    public class ArrayDemo {
public static void main(String[] args){
//定义一个数组
int[] arr = {24,69,80,57,13}
System.out.println("排序前:" + arrayToString(arr)); for(int j = 0 ; j < arr.length-1 ; j++){
for(int i = 0 ; i < arr.length-1-j ; i++){
if(arr[i] > arr[i+1]){
int temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
}
}
System.out.println("排序后:" + arrayToString(arr));
} //把数组中的元素按照指定的规则组成一个字符串:[元素1,元素2,...]
public static String arrayToString(int[] arr){
StringBulider sb = new StringBulider();
sb.append("[");
for(int i= 0;i < arr.length;i++) {
if (i == arr.length - 1) {
sb.append(arr[i]);
}else {
sb.append(arr[i]).append(",");
}
}
sb.append("]");
String s = sb.toString();
return s;
}
}

最新文章

  1. SQL Server触发器
  2. 【ORACLE】记录通过执行Oracle的执行计划查询SQL脚本中的效率问题
  3. shell指令expr和test指令
  4. LeetCode Rotate List (链表操作)
  5. Devexpress 使用经验 —— ASPxGridView前后台交互写法推荐
  6. C#版考题
  7. 常见编程语言对REPL支持情况小结[转]
  8. 一个基于Asp.net MVC的博客类网站开源了!
  9. (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  10. 【并发编程】【JDK源码】J.U.C--组件FutureTask、ForkJoin、BlockingQueue
  11. git合并分支
  12. 每天一点Linux系列之—vim
  13. mysql小细节随笔
  14. [ZJOI2010]贪吃的老鼠
  15. .NET Core 2.2发布一览
  16. HTML标签(二)
  17. 转 git config命令使用
  18. react 为元素添加自定义事件监听器
  19. pip 安装库过慢
  20. RK3288 修改浏览器默认主页和书签

热门文章

  1. 在HearthRanger中使用Silverfish
  2. Kafka Eagle 安装
  3. Exponentiation(求高精度幂)
  4. mybatis之动态SQL操作之查询
  5. hibernate关联总结
  6. jar/war文件的解释
  7. 部署k8s时容器中ping不通
  8. PTA --- L2-003 月饼
  9. 2019Java常见面试上
  10. USACO 1.2 Broken Necklace