您的位置:首页 > 编程语言 > Java开发

Day10 JavaSE基础复习 (10)面向对象-权限修饰符&匿名内部类 (11)Eclipse使用&Object类型 (12)String类

2019-05-18 20:02 357 查看

 (10)面向对象-权限修饰符&匿名内部类 

一.包

  1.  带包的文件在DOC中编译
    javac -d . HelloWorld.java
    java 包名.HelloWorld
  2. 四种权限修饰符
                           本类     同一包下(子类与无关类)     不同包下(子类)     不同包下(无关类)
    private             Y         
    默认                 Y                      Y
    protected         Y                      Y                                      Y
    public               Y                      Y                                      Y                           Y

二.内部类

  1. 外部类访问内部类成员
    Outer.Inner oi = new Outer().new Inner(); 
    外部类名.内部类名  对象名  = 外部类对象.内部类对象  外部类访问静态内部类中的非静态方法
    Outer.Inner oi = new Outer.Inner();          //等号右边实际上是 Outer.new Inner();
    外部类名.内部类名  对象名   = 外部类名.内部类对象
  2. 外部类访问静态内部类中的静态方法
    Outer.Inner.method();
  3. 局部内部类:只能在其所在的方法中访问
  4. 局部内部类访问局部变量必须用final修饰
            因为当调用这个方法时,局部变量如果没有用final修饰,他的生命周期和方法的生命周期是一样的,当方法弹栈
    这个局部变量也会消失,那么如果局部内部类对象还没有马上消失想用这个局部变量,就没有了,如果用final修饰会
    在类加载的时候进入常量池,即使方法弹栈,常量池的常量还在,也可以继续使用
       但是jdk1.8取消了这个事情,可以不加final

 (11)Eclipse使用&Object类型

一.Eclipse

  1.  IDE 集成开发环境  Intergrated  Development  Environment
  2. 下载  http://eclipse.org/
  3. 快捷键
    alt + shift + s 再 + c 生成空参构造
    alt + shift + s 再 + o 根据本地字段(成员变量)生成有参构造
    alt + shift + s 再 + r  生成get set方法

    alt + shift + r  改名

二.常见对象

  1.  API  (Application Programming Interface)应用程序编程接口
    Java API  就是Java提供给我们使用的类,这些类将底层的实现封装了起来
  2. Object
    hashCode();        //哈希值
    Class  clazz = *.getClass();           String name = clazz.getName();    //获取类名
    toString();          //类名@hashCode十六进制表现形式
    equal(Object obj);       //Object中的equal方法是比较对象的地址值,需要重写。因为开发中通常比较的是对象的属性值

 (12)String类 

一. 面试题

[code]//常量池中没有这个字符串对象,就创建一个,如果有就直接用即可
String s1 = "abc";
String s2 = "abc";
syso(s1 ==s2);                //true
syso(s1.equals(s2));          //true
[code]String s1 = new String("abc"); //会创建两个对象,常量池中一个,对象中一个
//对象中的那个相当于常量池中的副本
[code]String s1 = new String("abc");        //记录的是堆内存对象的地址值
String s2 = "abc";                    //记录的是常量池中的地址值
syso(s1 == s2);             //false
syso(s1.equals(s2));        //true

 

[code]String s1 = "a" +"b" + "c"; //java中有常量优化机制
String s2 = "abc";
String s3 = "ab";
String s4 = s3 + "c"; //底层会创建一个StringBuffer或StringBuilder对象,append进行拼接,然后
//调用toString方法转化成String类型对象,所以s4中存的是String对象的地址值
syso(s1 ==s2);                //true
syso(s1.equals(s2));          //true
syso(s4 == s2);               //false

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐