Java基础第三天--内部类、常用API
形参和返回值
抽象类名作为形参和返回值
- 方法的形参是抽象类名,其实需要的是该抽象类的子类对象
- 方法的返回值是抽象类名,其实返回的是该抽象类的子类对象
接口名作为形参和返回值
- 方法的形象是接口名,其实需要的是该接口的实现类对象
- 方法的返回值是接口名,其实返回的是该接口的实现类对象
内部类
内部类概述
- 内部类:就是在一个类中定义一个类
- 内部类的定义格式
格式:
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的更多相关文章
- Java基础语法Day_07(1-3 常用API第一部分)
常用API第一部分 第1节 Scanner类 day07_01_API概述和使用步骤(使用最基本的三个步骤 搜索 构造方法 方法) day07_02_Scanner概述及其API文档 ...
- Java基础学习笔记十四 常用API之基本类型包装类
基本类型包装类 Java中有8种基本的数据类型,可是这些数据是基本数据,想对其进行复杂操作,变的很难.怎么办呢?在实际程序使用中,程序界面上用户输入的数据都是以字符串类型进行存储的.而程序开发中,我们 ...
- Java基础(三)——内部类
一.内部类 内部类(Inner Class)就是定义在一个类里面的类.与之对应,包含内部类的类被称为外部类.内部类可以用private修饰. 1.为什么要定义内部类?或者内部类的作用是什么? 内部类提 ...
- Java程序员的现代RPC指南(Windows版预编译好的Protoc支持C++,Java,Python三种最常用的语言,Thrift则支持几乎主流的各种语言)
Java程序员的现代RPC指南 1.前言 1.1 RPC框架简介 最早接触RPC还是初学Java时,直接用Socket API传东西好麻烦.于是发现了JDK直接支持的RMI,然后就用得不亦乐乎,各种大 ...
- Java基础:三步学会Java Socket编程
Java基础:三步学会Java Socket编程 http://tech.163.com 2006-04-10 09:17:18 来源: java-cn 网友评论11 条 论坛 第一步 ...
- Java基础-考察JVM内部结构的常用工具介绍
Java基础-考察JVM内部结构的常用工具介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我们可以通过jvisualvm.exe考察jvm内部结构.而jvisualvm.exe ...
- Java实习生常规技术面试题每日十题Java基础(三)
目录 1.是否可以从一个static方法内部发出对非static方法的调用? 2.Integer与int的区别? 3.Overload和Override的区别.参数列表相同,返回值不同的方法,是否是重 ...
- Java基础复习笔记系列 五 常用类
Java基础复习笔记系列之 常用类 1.String类介绍. 首先看类所属的包:java.lang.String类. 再看它的构造方法: 2. String s1 = “hello”: String ...
- java 基础知识三 java变量
java 基础知识 三 变量 1.作用域 {} 包围起来的代码 称之为代码块,在块中声明的变量只能在块中使用 2.常量 就是固定不变的量,一旦被定义,它的值就不能再被改变. 3.变量 变量必须在程序 ...
随机推荐
- 排错: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页面, ...
- PCL点云库(Point Cloud Library)简介
博客转载自:http://www.pclcn.org/study/shownews.php?lang=cn&id=29 什么是PCL PCL(Point Cloud Library)是在吸收了 ...
- 【转】实现1080P延迟低于500ms的实时超清直播传输技术
最近由于公司业务关系,需要一个在公网上能实时互动超清视频的架构和技术方案.众所周知,视频直播用 CDN + RTMP 就可以满足绝大部分视频直播业务,我们也接触了和测试了几家 CDN 提供的方案,单人 ...
- Linux系统管理_主题02 :管好文件(1)_2.3 拷贝、剪切、删除和创建文件_cp_mv_rm
用法:cp [选项]... [-T] 源文件 目标文件 或:cp [选项]... 源文件... 目录 或:cp [选项]... -t 目录 源文件... 将源文件复制至目标文件,或将多个源文件复制至目 ...
- git学习教程二之远程仓库学习
首先你需要注册一个github用户名,我的github账户是:1654218052@qq.com 由于本地的git仓库和github的仓库是通过SSH加密的,所以我们还需要设置一点东西哦 第1步:创建 ...
- 配置nova-compute在不同的hypervisors上使用不同的存储后端
说明:主参考:https://www.sunmite.com/openstack/use-local-storage-for-different-hypervisors.html 在控制节点上执行 1 ...
- 华三F100系列防火墙 、华为USG6300系列防火 GRE 隧道配置
GRE概述: 通用路由封装(GRE: Generic Routing Encapsulation)是通用路由封装协议,可以对某些网络层协议的数据报进行封装,使这些被封装的数据报能够在IPV4网络中传输 ...
- 用Blackbox Exporter to Monitor web和端口
1.按照exporter .wget https://github.com/prometheus/blackbox_exporter/releases/download/v0.12.0/blackbo ...
- Daily Temperatures
Given a list of daily temperatures T, return a list such that, for each day in the input, tells you ...
- kettle 创建作业发送邮件
1.创建作业 . 2. 发送邮件配置,测试邮件 发件地址可以使用的QQ.126.163等邮箱 smtp server的填写smtp.qq.com或者smtp.126.com等等都可以这里我用Q163邮 ...