2015/11/19 内部类

原创 2015年11月19日 15:43:24

2015/11/19 由于内部类引起的学习

   

       为了什么写博客-----怕忘  ;    为了什么怕忘 ---怕问了不会 ;  为了什么怕问了不会  ---怕经验少 ;为了什么怕经验少----怕赚钱少;

       学习只是为了赚钱 ,所以必须努力。

     

       内部类:今天看见同事写的内部类,我起初的想法就是写这个几把玩意做毛啊,不费事啊,后来想想,算了为了多赚钱还是学习下吧。


      以maven启动的测试类为例,内部类其实就相当于一个可以包含方法的方法

public class RunTest {
    Logger logger = LoggerFactory.getLogger(RunTest.class);

    String name="wulei";

    public void test111(){
        new neibulei("11111").neibutest();
        //和neibulei nei=new neibulei("1111"); nei.nebutest();一样,只是多了一个对象的引用
        
        new neibulei().neibutest();
    }
   private  class neibulei{
       public neibulei(){
           name="wangmin";
       }
       public neibulei(String name123){
           name=name123;
       }
       public void neibutest(){
           name="wuleiwangmin";
           logger.info("name:{}",name);
       }

    }

    @Test
    public void test(){
        test111();
    }

}
好处是啥我也不知道,感觉就是闲的 分开写不好么 ,非写一起,好处以后知道再补充吧。

里面用到内部类,就设计到构造函数什么时候调用,构造函数的作用了。

   

    构造器:与类同名,可以有参数,可以没有(爱有几个有几个)没有返回值(不能写什么void什么玩意的),随着new去调用(所以一般就是个初始化,没人在这个里面进行别的操作,也不是说不能这么做,也许大家就是定个规范,不想这么做吧 )


                    如果执行的是有参数的构造函数,则默认的无参构造函数不会执行,如果执行的时候new 类().方法()   这个时候先要去执行下无参的构造方法,之后再调用方法。

                  构造器其实我感觉也没啥用,就是个初始化,spring都自己管理对象了 ,谁知道用这个赋值做毛,以后知道再补充吧,构造器都看了,肯定想到的是那些对象空间的分配,什么对象,什么值存在什么位置上。


    内存空间:所有的内存分配,你的先把程序给他编译运行起来啦,不编译谈毛运行(运行需要class文件),不运行谈毛内存分配,在java里面写new,只是写个文字,不编译,不运行不会分配空间

                        首先内存的区域有大致的几个地方分配------栈,堆,静态变量存储区,代码区

   

首先思考的三个问题:1.什么变量?存哪?

                                         2.when分空间

                                         3.when释放


              栈(对象的引用,局部变量,形参)

              堆(new出来的数据,成员变量)

              静态变量存储区(静态变量)

              代码区(方法,.class)

              真不知道知道这玩意有啥用,写错程序不就自己报错了么,为了赚钱还是研究研究吧,下面举个例子

   

在一个类里面   Person p;(这时栈里面什么也没有)

                           Person p    =newPerson ();(这时程序开始工作啦先看看有没有class,如果没有的话是无法创建对象的)

                           这个时候首先做的事情不是把对象的引用放在栈里面


现在处于程序的运行阶段jvm的生命周期是存活的(java运行时需要虚拟机,一个jvm的生命周期是指启动到退出的过程,程序的运行按钮从红到灰的这个过程,一个jvm生命周期一个类只加载一次,所以改了java文件,需要重启服务)


                           1.加载类,把class加载到内存放在代码区,同时把静态变量加载进静态变量存储区

                           2.创建对象的引用在中(存了一个地址)

                           3.如果 Person p1    =newPerson ();这个时候不用加载class,分配静态变量存储,直接创建对象的引用(一个jvm相同的类只加载一次,静态变量应该也是),同时对这个类里面的成员变量分配空间,存在中,因为是new才会分配的,所以是堆不是栈

                           4.如果Student stu=new Student();这个时候还需要加载Student类,之后加载这个类的静态变量,创建对象的引用

      

这个时候我感觉最需要思考的一个问题是:tm的一个类什么时候被加载难道只有new么

                           显然不是,类加载有两种,new,调用静态方法

之后面试的问题来了,静态方法中可以直接使用成员变量和方法不------>答案果断no啊

                            分析:静态方法(类加载时create),成员变量,方法(new是create),现在尼玛都没有new,而是另一种加载类的方式,何来可以静态方法调用成员变量,方法

                                    

当这个类去调用别的类的方法的时候(如果只是new类,没有调用方法是不会对局部变量和形参分配内存的),这个时候就有形参,局部变量的存在了,这个时候内存分配的位置是



    释放资源:对应静态变量(1个jvm生命周期),所以很少用static,如果只有一次,机器不重启一直处于一个jvm中,不会释放资源

                        对类的成员变量,在类对象销毁的时候销毁

                       对形参,局部变量,方法结束回收资源



2015-11-19-正则表达式使用小记

简要 元字符metacharacter 限定符 反义 分组语法 贪婪与懒惰 测试简要在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具。换...
  • bxh7425014
  • bxh7425014
  • 2015年11月19日 16:08
  • 710

[转]2038/01/19 11:14:07

[转自]http://hi.baidu.com/comdeng/blog/item/0fb05054b8d9c053574e00c1.html 给出这样一个标题,实在有些唐突,不过这是我最近一直在思考...
  • aidenliu
  • aidenliu
  • 2010年04月09日 01:15
  • 1745

【BZOJ3889】【Usaco2015 Jan】Cow Routing 双键值最短路

题意: 从样例讲起。 第一行 s,t,m表示:起点,终点,m条航线。 然后m组,每组第一行len,n表示这条航线的代价, 这类似于公交车,只要用了就花这些钱,但是用多少都这些钱。 注意是单向...
  • Vmurder
  • Vmurder
  • 2015年03月04日 19:18
  • 1378

VS2015update2环境下DirectX11编程说明

本文索引: 一 关于龙书二 在vs2015u2环境下编写DirectX11程序三 关于MSDN帮助文档四 官方示例项目五 自己尝试编写一个小项目 1 创建一个win32项目2 配置依赖库3 添...
  • duotemplar
  • duotemplar
  • 2017年10月30日 15:18
  • 155

DirectX 11 Tutorials-Tutorial 1: 在visual studio上建立directx11

在写任何图形代码前, 我们需要个工具来做这些事. 第一个工具就是一个已经建立在很好的IDE中的编译器. 这个我已经用过的并且将会被应用在我们的工程文件中的就是visual studio 2010. 在...
  • w18767104183
  • w18767104183
  • 2012年05月07日 16:08
  • 2751

java基础教程:内部类(19)

今天的内容是:java内部类,,快上车!!!
  • dreamsigel
  • dreamsigel
  • 2017年07月08日 11:22
  • 186

C++(11):友元、嵌套类

关于“友元”和“嵌套类”一些用法上的说明。
  • qcyfred
  • qcyfred
  • 2016年12月22日 20:50
  • 356

2016/07/19 内部类

1.内部类 类写在一个类的里面 (1)。内部类的一个属性是静态的,则内部类也应该是静态的 class a{      class b{              } } 2....
  • u011482763
  • u011482763
  • 2016年07月19日 17:05
  • 133

LeetCode51:N-Queens

The n-queens puzzle is the problem of placing n queens on an n×n chessboard such that no two queens ...
  • u012501459
  • u012501459
  • 2015年06月09日 11:05
  • 847

内部分享内容,原作lvxy

程序员能力分析,工作能力与技术水平(工作能力=业务理解+特定领域技术水平+工作习惯)如何提升自己对应的工作能力(三部分 表结构 拼sql 写代码)如何提升自己的全面技术水平(很多老生常谈了)...
  • u013653738
  • u013653738
  • 2017年12月11日 17:21
  • 142
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:2015/11/19 内部类
举报原因:
原因补充:

(最多只允许输入30个字)