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

 (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(); 
    外部类名.内部类名  对象名  = 外部类对象.内部类对象 
  2. 外部类访问静态内部类中的非静态方法
    Outer.Inner oi = new Outer.Inner();          //等号右边实际上是 Outer.new Inner();
    外部类名.内部类名  对象名   = 外部类名.内部类对象
  3. 外部类访问静态内部类中的静态方法
    Outer.Inner.method();
  4. 局部内部类:只能在其所在的方法中访问
  5. 局部内部类访问局部变量必须用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类 

一. 面试题

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

 

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    

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值