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关键字可以用于何处 修饰类:该类不可被继承 修饰变量:该变量一经初始化就不能被重新赋值,即使该值跟初始化的值相同或者指向同一个对象,也不可以 类变量: 实例变量: 形参: 注意可以修饰形参 ...
随机推荐
- sed高级命令
所谓高级,主要是指这里将要提到的命令都能改变sed执行或者控制的流程顺序(sed通常都是一行被读入模式空间,并用脚本中的sed命令一个接一个的应用于那一行). 高级sed命令分成3个组: 1)处理多行 ...
- bugfree搭建
- 让乌龟在提交cocos2d-x版本时自动去掉不需要的东东
引擎版本:2.1.4 ide:vs2012 一般协作开发情况下,有意思无意将bin.obj等一些目录添加到版本管理中是很烦人的事儿,在VS中不断地编译程序集和提交将带来版本暴增问题.如果你用的是乌龟S ...
- Java Servlet的配置文件web.xml配置内容和具体含义
文件名:“SimpleServlet.java” package cn.mldn.lxh.servlet ;//定义包 import java.io.* ; // HttpServlet属于javax ...
- N个数依次入栈,出栈顺序有多少种
题目:N个数依次入栈,出栈顺序有多少种? 首先介绍一下卡特兰数:卡特兰数前几项为 : 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 2 ...
- vc++深入跟踪MFC程序的执行流程
在MFC程序设计的学习过程中最令人感到难受,甚至于有时会动摇学习者信心的就是一种对于程序的一切细节都没有控制权的感觉.这种感觉来源于学习者不知道一个MFC程序是如何运行起来的(即一个MFC程序的执行流 ...
- java应用程序远程登录linux并执行其命令(ssh jar包)
http://www.ganymed.ethz.ch/ssh2/在这个网址下载一个调用ssh和scp命令的jar包. 然后,就可以写程序了.将上面的jar包导入MyEclipse,下面是一个类的实例代 ...
- VC维的物理意义
vc约等于可调节参数的个数 来自为知笔记(Wiz)
- RBF network
1.radial basis function RBF表示某种距离,$\mu_m$为中心点,相当于将点$x$到中心点的某种距离作为特征转换 Output方法可以根据需求任意选取(比如使用SVM,log ...
- AndroidUI 布局动画-为列表添加布局动画效果
新建一个Android project ,使MainActivity 继承自 ListActivity: public class MainActivity extends ListActivity ...