java中内部类的讲解

java中有一个内部类的概念,由于之前一直比较忙,没有单独拿出时间总结一下,今天我就把内部类的相关知识进行一下汇总,如果有不足之处,欢迎批评指正。

1)java内部类的概念。

      在一个类的的内部定义的类被称为java的内部类

2)内部类的分类

     根据内部类的位置不同,可以大致分为一下两类:

1.普通内部类又叫成员内部类,在方法体的外面定义的内部类

其中普通内部类又分为静态(static修饰的内部类)和非静态(非static修饰的内部类)

2.局部内部类又叫方法内部类,在方法体中定义的内部类

          其中普通内部类又分为静态(static修饰的内部类)和非静态(非static修饰的内部类)以及匿名内部类。

3)每种内部类的详细详解

     1.普通内部类

package com.xiaohao.test;

import java.util.Date;

public class Test12 extends Date{
  public static void main(String[] args) {
	  new Test12().test();
}

  public void test(){
	  System.out.println(getClass().getName());
	  System.out.println(getClass().getName());
	  System.out.println(super.getClass().getName());
	  System.out.println(this.getClass().getSuperclass().getName());
	  System.out.println(super.getClass());
	  String str1=new String("Hello World");
	  String str2=new String("Hello World");
	  StringBuffer str3=new StringBuffer("Hello World");
	  StringBuffer str4=new StringBuffer("Hello World");
	  System.out.println(str1.equals(str2));
	  System.out.println(str3.equals(str4));
	  new Object()
//	  long startTime=System.currentTimeMillis();
//   for(int i=0;i<50000;i++)
//   {
//	   str1=str1+i;
//   }
//	  long endTime=System.currentTimeMillis();
//	  System.out.println("String一共花费时间为:"+(endTime-startTime)+"ms");
//	  startTime=System.currentTimeMillis();
//	   for(int i=0;i<50000;i++)
//	   {
//		   str3=str3.append(i);
//	   }
//		endTime=System.currentTimeMillis();
//	  System.out.println("StringBuffer一共花费时间为:"+(endTime-startTime)+"ms");

	  String str="a,b,c,d,e,f";
	  String[] strArray=str.split(",");
	  System.out.println(strArray.length);
	  String s1="a";
	  String s2=s1+"b";
	  String s3="a"+"b";
	  System.out.println(s2=="ab");
	  System.out.println(s3=="ab");
	  int a=Test12.test2();
	  System.out.println(a);
	  int i=100;
	  try{
		  return ;
	  }catch(Exception e){

	  }finally{
		  System.out.println(i);
	  }
  }

  static int test2(){
	  int i=10;
	  try{
		  int b=10;

		  return i;
	  }
	  finally{
		  ++i;
	  }
  }
}

  

时间: 2024-11-08 04:32:28

java中内部类的讲解的相关文章

java中内部类的创建四种情况,三种方式,及内部数据访问权限

内部类和外部类的关系,及内部静态类的数据访问权限,声明方式. 第一种,在外部类内部声明使用内部类,内部类的类型为static和非 static类型,内部类数据类型为private,protected,public 类型的访问权限.外部类为非静态声明和权限如下: package com; public class Test1 { //@author 张春蕾 private class Name{ private int i =1; public int s = 2; protected int m

Java中内部类

内部类的规则: 1.内部类可以直接访问外部类中的成员,包括私有. 之所以可以直接访问外部类中的成员,是因为内部类中持有一个外部类的引用,格式:外部类名.this 2.外部类要访问内部类,必须建立内部类对象 访问格式: 1.当内部类定义在外部类的成员位置了,而且非私有,可以在外部其他类中. 可以直接建立内部类对象. 格式: 外部类类名.内部类名  变量名= new 外部类对象.new 内部类对象. Outer.inner out = new Outer().new inner(); 2.当内部类在

Java中内部类揭秘(一):外部类与非静态内部类的”相互可见性“

声明:本博客为原创博客,未经允许,不得转载!原文链接为 http://blog.csdn.net/bettarwang/article/details/27012421. 我们都知道,非静态内部类可以访问外部类的私有成员(包括私有变量和方法),这也正是使用非静态内部类与普通类的一个重要区别:非静态内部类是依赖于外部类对象而存在的,这种依赖就包括它要能自由地访问外部类对象的所有成员(因为private成员都可以访问了,其他权限的成员更不在话下.不过一般来说一个内部类只会访问外部类的部分成员而不是全

JAVA中内部类(匿名内部类)访问的局部变量为什么要用final修饰?

本文主要记录:在JAVA中,(局部)内部类访问某个局部变量,为什么这个局部变量一定需要用final 关键字修饰? 首先,什么是局部变量?这里的局部是:在方法里面定义的变量. 因此,内部类能够访问某局部变量,说明这个内部类不是在类中定义的内部类,而是在方法中定义的内部类,称之为:局部内部类. 局部变量的作用域:局部变量是在某个方法中定义,当该方法执行完成后,局部变量也就消失了.[局部变量分配在JVM的虚拟机栈中,这部分内存空间随着程序的执行自动回收],也即:局部变量的作用域是在 “方法的范围内”.

java中内部类的积累

放在一个类的内部的类我们就叫内部类. 二. 作用 1.内部类可以很好的实现隐藏 一般的非内部类,是不允许有 private 与protected权限的,但内部类可以 2.内部类拥有外围类的所有元素的访问权限 3.可是实现多重继承 4.可以避免修改接口而实现同一个类中两种同名方法的调用. 提起Java内部类(Inner Class)可能很多人不太熟悉,实际上类似的概念在C++里也有,那就是嵌套类(Nested Class),关于这两者的区别与联系,在下文中会有对比.内部类从表面上看,就是在类中又定

java中内部类的定义与访问规则

java内部类总结 简单来说,内部类就是在我们所熟悉的类中的里面再定义一个类 为什么需要内部类? 当我们描述事物时,事物之中还有事物,我们就用内部类描述事物 因为内部事物在使用外部事物的内容 我举一个例子 人体有心脏,血液,肝,脾,肺-……那么心脏该如何定义? 我们应该定义心脏为内部类,因为它在使用外部类(人体)的血液,氧气…… 实例1:内部类的基本结构 class Out /*外部类*/ { private int x=3; class In /*内部类*/ { private int y p

关于Java中内部类的一些概念整理

把一个类放到另一个类的内部定义,这个定义在其他类内部的类就被称为内部类. 内部类的作用: (1).内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类. (2).内部类成员可以直接访问外部类的私有数据,因为内部类被当成其外部类成员,同一个类的成员之间可以互相访问.但外部类不能访问内部类的实现细节. (3).匿名内部类适用于创建那些仅需要一次使用的类. (4).内部类比外部类可以多使用三个修饰符:private.protected.static--外部类不可以使用

Java中集合的讲解

问题: 1.什么是集合 2.集合重用的有哪几种 3.集合中HashSet的存储样例 4.集合的遍历方法 集合:存储对象数据的集合容器 单例集合 --–| Collection 单例集合的根接口 -----|List 如果是实现了List接口的集合类,具备的特点:有序,可重复 ------|ArrayList ArrayList底层是使用了Object数组实现的,特点:查询速度快,增删慢 ------|LinkedList LinkedList底层是使用了链表数据结构实现的,特点:查询速度慢,增删

Java 中内部类特性总结(吐血之作)

PS:今天花了整个下午时间看内部类相关的内容,因知识点多而杂,故记之如下. 一.内部类的作用 内部类看起来是一种代码隐藏机制:将类置于其他类的内部.它还了解外部类,并能与之通信:使用内部类可以实现闭包:内部类与接口使得多继承更完整,并且内部类是一个独立的实体(没有 is-a,仅仅是方法的封装). 二.基本特性 1)普通内部类为类的实例相关,可以看成是一个实例变量.内部类的类名由 "外部类.内部类" 确定. 内部类可以直接访问外部类的所有成员(包括 private成员),隐式或显式(外部