Object类、包装类、内部类详解
1、Object类
1、概念:
1.1 所有类在创建时都默认继承了java.lang.Object
1.2 所有类对象都可以声明为类对象的引用
Object ob1=new String();
Object ob2=new Integer();
2、子类继承了其方法:
2.1 equals
类似于”==”,比较对象的引用
ps:具体前面blog有详讲,这里就不赘述了
2.2 toString():
返回一个对象的字符串表示形式(可改写)
源码如下:
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
2.3、getClass():
返回一个对象的实际类型
ps:
- 其返回的是具体实例化的类型
- instanceof判断的是其是否实例化了,包括其父类的判断
2、包装类
1、概念:
包装类是对基本类型的包装:所以也是8个
2、列举表:
| 基本类型 | 包装类 |
|---|---|
| byte | Byte |
| short | Short |
| int | Integer |
| long | Long |
| float | Float |
| double | Double |
| char | Character |
| boolean | Boolean |
3、包装类的转换:
包装类、String、基本类型间两两转换
具体可参考我前一篇关于String的blog,中有详解
3、内部类*
1、成员内部类
1.1 访问权限:
可以访问外部内的静态或非静态的属性和方法
1.2 实例:
先实例化外部类,再实例化内部类
2、静态内部类
1.1 访问权限:
可以访问外部内的静态的属性和方法
1.2实例:
先实例化外部类,再调用静态类
3、局部内部类
1.1 访问权限:
可以访问外部内的静态或非静态的属性和方法
1.2 实例:
在方法中实例化,接着实例化外部类,调用方法
4、匿名内部类
1.使用情况:
1.1 只实例化一次的对象
1.2 局部内部类要实现接口或继承某些父类
最后贴上练习代码君:
package com.jacob.javase;
/*
* 内部类分类:
* 1.成员内部类
* 2.静态内部类
* 3.局部内部类
* 4.匿名内部类
*/
public class InnerClass {
public static void main(String[] args) {
// 成员内部类的实例
// MemberInner.Inner2 mi=(new MemberInner()).new Inner2();
// mi.doSomething();
// MemberInner mi1=new MemberInner();
// mi1.method();
// 静态内部类的实例(可直接通过类调用)
// StaticInner.Inner si=new StaticInner.Inner();
// si.test();
// 实例局部类
// LocalInner li = new LocalInner();
// li.doSomething();
// 4.匿名内部类:使用条件:
// 4.1 局部内部类可能就需要创建一个对象
// 4.2 局部内部类需要实现外部接口或继承某些父类
new InnerClass();
new Test() {
@Override
public void m1() {
// TODO Auto-generated method stub
System.out.println("匿名类test");
}
}.m1();
}
}
interface Test {
void m1();
}
// 1.成员内部类:
class MemberInner {
private int a = 4;
// 访问权限:可访问外部类的的静态与非静态的属性和方法
public class Inner2 {
private int a = 5;
public void doSomething() {
System.out.println("Hello World!");
System.out.println(this.a);// 5
System.out.println(MemberInner.this.a);// 4
}
}
public void method() {
// 实例化成员内部类
Inner2 inner = new Inner2();
System.out.println(inner.a);
}
}
// 2.静态内部类:
class StaticInner {
private static int a = 4;
// 访问权限:只能访问外部类的静态属性和方法
public static class Inner {
public void test() {
System.out.println(a);
}
}
}
// 3.局部内部类
// 访问权限:可以访问外部内的静态或非静态属性和方法:
class LocalInner {
public void doSomething() {
int b = 1;
final int a = 4;
class Inner3 {
int c = 1;
public void test() {
System.out.println(a + b);
}
}
// 只能在方法块中实例
Inner3 li1 = new Inner3();
li1.test();
System.out.println(li1.c);
}
}
Object类、包装类、内部类详解的更多相关文章
- Object类中方法详解
目录 概述 hashCode方法 getClass方法 toString方法 equals方法 clone方法 finalize方法 概述 Object 是类层次结构的根类.每个类都使用 Object ...
- Java内部类详解
Java内部类详解 说起内部类这个词,想必很多人都不陌生,但是又会觉得不熟悉.原因是平时编写代码时可能用到的场景不多,用得最多的是在有事件监听的情况下,并且即使用到也很少去总结内部类的用法.今天我们就 ...
- [转] Java内部类详解
作者:海子 出处:http://www.cnblogs.com/dolphin0520/ 本博客中未标明转载的文章归作者海子和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置 ...
- 【转】Java内部类详解
一.内部类基础 在Java中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类.广泛意义上的内部类一般来说包括这四种:成员内部类.局部内部类.匿名内部类和静态内部类.下面就先来了解一 ...
- Java内部类详解 2
Java内部类详解 说起内部类这个词,想必很多人都不陌生,但是又会觉得不熟悉.原因是平时编写代码时可能用到的场景不多,用得最多的是在有事件监听的情况下,并且即使用到也很少去总结内部类的用法.今天我们就 ...
- String类的构造方法详解
package StringDemo; //String类的构造方法详解 //方法一:String(); //方法二:String(byte[] bytes) //方法三:String (byte[] ...
- Scala 深入浅出实战经典 第63讲:Scala中隐式类代码实战详解
王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...
- JAVA基础——内部类详解
JAVA内部类详解 在我的另一篇java三大特性的封装中讲到java内部类的简单概要,这里将详细深入了解java内部类的使用和应用. 我们知道内部类可分为以下几种: 成员内部类 静态内部类 方法内部类 ...
- Java内部类详解(一)
(转自:http://blog.csdn.net/wangpeng047/article/details/12344593) 很多人对于Java内部类(Inner Class)都十分陌生,甚至听都没听 ...
- 【Java_基础】Java内部类详解
1.四种内部类 java中的四种内部类:成员内部类.静态内部类.局部内部类和匿名内部类.其中匿名内部类用到的最多. 1.1.成员内部类 若一个类定义在另一个类的内部作为实例成员,我们把这个作为实例成员 ...
随机推荐
- php file_get_contents curl发送cookie,使用代理
$auth = base64_encode('LOGIN:PASSWORD');//LOGIN:PASSWORD 这里是你的账户名及密码 $aContext = array( 'http' => ...
- HDU 3265 扫描线(矩形面积并变形)
Posters Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Sub ...
- 使用WBI SAP Adapter 实现IDoc的同步处理(转)
1. 应用背景 某汽车制造企业(以下称为厂商A)与其仓储系统提供商(以下称为厂商B)需要进行数据交换.汽车厂商A使用SAP系统作ERP管理,所有数据都要进入SAP进行处理,仓储系统提供商使用的是自有的 ...
- VS2010连接SQLite数据库
Visual studio 2010及以上版本,连接SQLite数据库 1.在Sqlite开发站点下载SQLite的.exe安装包 Ctrl+F搜索这条语句:This is the only setu ...
- C#编程
C#最完整的webservice实例 http://fyinthesky.blog.163.com/blog/static/3555251720110115227337/ C# WinForm 实践开 ...
- MSMQ消息队列
MSMQ全称MicroSoft Message Queue,微软消息队列,是在多个不同的应用之间实现相互通信的一种异步传输模式,相互通信的应用可以分布于同一台机器上,也可以分布于相连的网络空间中的任一 ...
- iOS9/iOS8界面对比 XCode7
Xcde7 bate 无需开发这账号(99¥)可以调试程序 目前是测试版 iOS9/iOS8界面对比 (注:左边为iOS8界面,右边为iOS9界面.) 1.新字体 苹果在 iOS9 中使用旧金山字体取 ...
- 蓝桥杯 BASIC_17 矩阵乘法 (矩阵快速幂)
问题描述 给定一个N阶矩阵A,输出A的M次幂(M是非负整数) 例如: A = 1 2 3 4 A的2次幂 7 10 15 22 输入格式 第一行是一个正整数N.M(1<=N<=30, 0& ...
- Oracle Data Integrator与OWB的集成及迁移
v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VM ...
- python几大排序算法
1.插入排序 原理:有数列[k1,k2,k3...],假设k1是排好序的,插入k2,排序完成,然后再插入k3,以此类推 def insert_sort(arr): for i in range(1,l ...