形参和返回值

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

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

接口名作为形参和返回值

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

内部类

内部类概述

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

格式:

   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;
}
}

Java基础第三天--内部类、常用API的更多相关文章

  1. Java基础语法Day_07(1-3 常用API第一部分)

    常用API第一部分 第1节 Scanner类         day07_01_API概述和使用步骤(使用最基本的三个步骤 搜索 构造方法  方法) day07_02_Scanner概述及其API文档 ...

  2. Java基础学习笔记十四 常用API之基本类型包装类

    基本类型包装类 Java中有8种基本的数据类型,可是这些数据是基本数据,想对其进行复杂操作,变的很难.怎么办呢?在实际程序使用中,程序界面上用户输入的数据都是以字符串类型进行存储的.而程序开发中,我们 ...

  3. Java基础(三)——内部类

    一.内部类 内部类(Inner Class)就是定义在一个类里面的类.与之对应,包含内部类的类被称为外部类.内部类可以用private修饰. 1.为什么要定义内部类?或者内部类的作用是什么? 内部类提 ...

  4. Java程序员的现代RPC指南(Windows版预编译好的Protoc支持C++,Java,Python三种最常用的语言,Thrift则支持几乎主流的各种语言)

    Java程序员的现代RPC指南 1.前言 1.1 RPC框架简介 最早接触RPC还是初学Java时,直接用Socket API传东西好麻烦.于是发现了JDK直接支持的RMI,然后就用得不亦乐乎,各种大 ...

  5. Java基础:三步学会Java Socket编程

    Java基础:三步学会Java Socket编程 http://tech.163.com 2006-04-10 09:17:18 来源: java-cn 网友评论11 条 论坛        第一步 ...

  6. Java基础-考察JVM内部结构的常用工具介绍

    Java基础-考察JVM内部结构的常用工具介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我们可以通过jvisualvm.exe考察jvm内部结构.而jvisualvm.exe ...

  7. Java实习生常规技术面试题每日十题Java基础(三)

    目录 1.是否可以从一个static方法内部发出对非static方法的调用? 2.Integer与int的区别? 3.Overload和Override的区别.参数列表相同,返回值不同的方法,是否是重 ...

  8. Java基础复习笔记系列 五 常用类

    Java基础复习笔记系列之 常用类 1.String类介绍. 首先看类所属的包:java.lang.String类. 再看它的构造方法: 2. String s1 = “hello”: String ...

  9. java 基础知识三 java变量

    java  基础知识 三 变量 1.作用域 {} 包围起来的代码 称之为代码块,在块中声明的变量只能在块中使用 2.常量 就是固定不变的量,一旦被定义,它的值就不能再被改变. 3.变量 变量必须在程序 ...

随机推荐

  1. 排错:Unable to create a new session key. It is likely that the cache is unavailable.

    排错:Unable to create a new session key. It is likely that the cache is unavailable. 问题 登录openstack页面, ...

  2. PCL点云库(Point Cloud Library)简介

    博客转载自:http://www.pclcn.org/study/shownews.php?lang=cn&id=29 什么是PCL PCL(Point Cloud Library)是在吸收了 ...

  3. 【转】实现1080P延迟低于500ms的实时超清直播传输技术

    最近由于公司业务关系,需要一个在公网上能实时互动超清视频的架构和技术方案.众所周知,视频直播用 CDN + RTMP 就可以满足绝大部分视频直播业务,我们也接触了和测试了几家 CDN 提供的方案,单人 ...

  4. Linux系统管理_主题02 :管好文件(1)_2.3 拷贝、剪切、删除和创建文件_cp_mv_rm

    用法:cp [选项]... [-T] 源文件 目标文件 或:cp [选项]... 源文件... 目录 或:cp [选项]... -t 目录 源文件... 将源文件复制至目标文件,或将多个源文件复制至目 ...

  5. git学习教程二之远程仓库学习

    首先你需要注册一个github用户名,我的github账户是:1654218052@qq.com 由于本地的git仓库和github的仓库是通过SSH加密的,所以我们还需要设置一点东西哦 第1步:创建 ...

  6. 配置nova-compute在不同的hypervisors上使用不同的存储后端

    说明:主参考:https://www.sunmite.com/openstack/use-local-storage-for-different-hypervisors.html 在控制节点上执行 1 ...

  7. 华三F100系列防火墙 、华为USG6300系列防火 GRE 隧道配置

    GRE概述: 通用路由封装(GRE: Generic Routing Encapsulation)是通用路由封装协议,可以对某些网络层协议的数据报进行封装,使这些被封装的数据报能够在IPV4网络中传输 ...

  8. 用Blackbox Exporter to Monitor web和端口

    1.按照exporter .wget https://github.com/prometheus/blackbox_exporter/releases/download/v0.12.0/blackbo ...

  9. Daily Temperatures

    Given a list of daily temperatures T, return a list such that, for each day in the input, tells you ...

  10. kettle 创建作业发送邮件

    1.创建作业 . 2. 发送邮件配置,测试邮件 发件地址可以使用的QQ.126.163等邮箱 smtp server的填写smtp.qq.com或者smtp.126.com等等都可以这里我用Q163邮 ...