java学习之匿名内部类与包装类
匿名内部类:
所谓匿名内部类,顾名思义指的就是定义在类内部的匿名类,现有的spring框架开发以及java图形界面都经常用到匿名内部类。
下面来看一个代码:
interface A{
public void fun() ;
}
class B implements A{
public void fun(){
System.out.println("Hello World!!!") ;
}
};
class X{
public void fun1(A a){
a.fun() ;
}
public void fun2(){
this.fun1(new B()) ;
}
};
public class NonameDemo01{
public static void main(String args[]){
new X().fun2() ;
}
};
如果这是实际开发,那么上面的代码存在什么问题?
在了解匿名类之前我们可能只能这样写来实现所需功能,但java语法允许通过设置匿名内部类来去除B类定义(因为B类只会使用一次,单独定义较为浪费)。
interface A{
public void fun() ;
}
class X{
public void fun1(A a){
a.fun() ;
}
public void fun2(){
this.fun1(new A(){
public void fun(){
System.out.println("Hello World!!!") ;
}
}) ;
}
};
public class NonameDemo02{
public static void main(String args[]){
new X().fun2() ;
}
};
包装类:
java遵从一切皆对象的原则,那么基本数据类型也应该可转为对象进行操作,这就是类的包装。
在jdk1.5之前,类的包装需要手工转换,
public class IntegerDemo01{
public static void main(String args[]){
int i = 10 ;
Integer i2 = new Integer(i) ; // 装箱操作
int j = i2.intValue() ; // 拆箱操作
System.out.println(j * j) ;
}
};
jdk1.5之后,可自动执行包装与拆装
public class IntegerDemo01{
public static void main(String args[]){
int i = 10 ;
Integer i2 = i ; // 装箱操作
int j = i2 ; // 拆箱操作
System.out.println(j * j) ;
}
};
三个常用Interger方法
public class IntegerSize { public static void main(String[] args) {
System.out.println(Integer.MAX_VALUE);//值为 2<sup>31</sup>-1 的常量
System.out.println(Integer.MIN_VALUE);//值为 -2<sup>31</sup> 的常量
System.out.println(Integer.SIZE);//数据类型位数
}
}
将字符串转换成int/float/double类型,借助parse(Int/Float/Double)
public class Integerint { public static void main(String[] args) {
String s="123";
int i = Integer.parseInt(s);
System.out.println(++i);
}
}
java学习之匿名内部类与包装类的更多相关文章
- Java学习笔记 05 数据包装类
一.包装类 综述 >>java.lang包中的Integer类.Long类和Short类,分别将基本数据类型int.long和short封装成一个类.这些类都是Number的子类. Int ...
- JAVA学习笔记--匿名内部类
匿名内部类,即没有名字的内部类. 我们在编写JAVA程序时,往往要创建很多类,类是可以被重复使用的.但有时,我们创建了一个类,却只需要使用该类一次,那么单独为其编写一个类就显得有些麻烦,这时可以使用匿 ...
- java学习之匿名内部类
/*匿名内部类 * * 一般用于抽象类和接口 * 因为他们不能实例化对象所以可以通过匿名内部类来帮助他们实例化 * 下面demo是抽象类的例子 * * */ abstract class Cat{ a ...
- 【Java学习笔记之二十六】深入理解Java匿名内部类
在[Java学习笔记之二十五]初步认知Java内部类中对匿名内部类做了一个简单的介绍,但是内部类还存在很多其他细节问题,所以就衍生出这篇博客.在这篇博客中你可以了解到匿名内部类的使用.匿名内部类要注意 ...
- Java学习——包装类
Java学习——包装类 摘要:本文主要介绍了Java中常用的包装类和基本类型之间的转换,包装类或基本类型和String之间的转换. 部分内容来自以下博客: https://www.cnblogs.co ...
- JAVA学习第二步,初级知识框架梳理
回顾往期的学习,才发现已经学习了这么多知识点.这里复制了其他创作者的一些梳理结合自己的梳理.总结了自己在Java学习入门阶段的知识点.笔记自己了也写了详细的两本 第一章 Java面向对象 1-1包的定 ...
- 0030 Java学习笔记-面向对象-垃圾回收、(强、软、弱、虚)引用
垃圾回收特点 垃圾:程序运行过程中,会为对象.数组等分配内存,运行过程中或结束后,这些对象可能就没用了,没有变量再指向它们,这时候,它们就成了垃圾,等着垃圾回收程序的回收再利用 Java的垃圾回收机制 ...
- 0028 Java学习笔记-面向对象-Lambda表达式
匿名内部类与Lambda表达式示例 下面代码来源于:0027 Java学习笔记-面向对象-(非静态.静态.局部.匿名)内部类 package testpack; public class Test1{ ...
- 0025 Java学习笔记-面向对象-final修饰符、不可变类
final关键字可以用于何处 修饰类:该类不可被继承 修饰变量:该变量一经初始化就不能被重新赋值,即使该值跟初始化的值相同或者指向同一个对象,也不可以 类变量: 实例变量: 形参: 注意可以修饰形参 ...
随机推荐
- JDK安装与环境变量配置(Win7)
1.下载JDK(Java SE Development Kit) 地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-dow ...
- A Byte of Python 笔记(3)运算符和表达式
第5章 运算符与表达式 大多数语句(逻辑行)都包含表达式.例子,如 2 + 3.一个表达式可以分解为运算符和操作数. 运算符 运算符 名称 说明 例子 + 加 两个对象相加 3 + 5得到8.'a' ...
- Linux 计算某文件夹下的所有文件的md5值
使用find 命令 find /root -type f -print0 |xargs -0 md5sum >a.md5 校验的话 md5sum -c a.md5
- EL表达式(转)
转自:http://www.cnblogs.com/Fskjb/archive/2009/07/05/1517192.html EL 全名为Expression Language EL 语法很简单,它 ...
- 500多条Linux信息
http://www.cnblogs.com/zgqjymx/myposts.html?page=77 http://www.cnblogs.com/zgqjymx/tag/%E5%8E%9F%E5% ...
- egret随笔-egret浅入浅出
•不知道有多人跟笔者一样,喜欢学各种技术,但是都不精,但也有一两项算是精的. 自从踏上了egret游戏开发的道路,就不得不学习各种技术了,因为,要精通egret,首先必须要会TypeScript,其次 ...
- 线性表A-B
1.顺序存储 #include<stdio.h> /* 设有两个顺序表A和B,且都递增有序,试写一算法,从A中删除与B中相同的那些元素,即求A-B */ #define getArrayL ...
- C#,json字符串转换成Json对象
将JSON的请求参数转化为C#可序列化对象! JSON请求参数: "{\"id\":1,"name":"张三","dep ...
- foreach真的比for性能高吗
void Main() { ; List<int> list=new List<int>(); ;i<count;i++) { list.Add(i); } List&l ...
- VB.NET函数——数学函数/字母串函数
一.数学函数 函数 说明 Abs (num) 取绝对值. Exp (num) 返回以e为底.以num为指数的值,如Exp(2)返回e^2值. Log (num) 返回参数num的自然对数值,为Doub ...