论坛首页 入门技术论坛

core java学习笔记()

浏览 1690 次
该帖已经被评为新手帖
作者 正文
   发表时间:2007-08-08  
OO

一、修饰符


修饰符       类                   属性                   方法                       局部变量

final       可以(不能被继承)   可以(不能被继承)      可以(表示不能被覆盖)     可以(常量)

static                           可以(类变量)          可以(静态方法)          

abstract    可以(抽象类)                               可以(抽象方法)

pulbic      可以                 可以                    可以

protected                        可以                    可以

default     可以                 可以                    可以

private                          可以                    可以

 

二、==与equals

基本类型进行值比较时用 ==
对象类型进行值比较时用 equals

写equals方法时:
  1、自反性判断    if(this==obj) return true;
  2、判断是否为null   if(obj==null) return false;
  3、判断类型是否兼容    if(!(obj instanceof 类)) return false;  或 if(this.getClass()!=obj.getClass()) return false;
  4、强制类型转换,判断每一个属性:简单类型用==,对象类型用.equals

toString()方法:  返回一个字符串
     直接输出一个对象时,会自动调用对象的toString()方法,输出toString()的返回值
     当没有覆盖toString()方法时,会输出 :对象名@十六进制的地址值


三、main方法的参数

 在命令模式下:java MainMethodTest abc def 100  
  
   abc是args[0],def是args[2],100是args[3]  都以字符串类型接收

 在eclipse下:run ...   先选择主类
      


四、String类详细介绍

 int a=5;
        int b=a<<33;   因为33%32=1; 所以左移1位。
 所以b=10;

 int a=3,b=4,c=5,d=0;
 if(a>b)
    if(c>d)
  d=10;
    else
  d=20;
 结果d=0;


 1、String是一个不变模式:不变模式:一个对象一旦产生就不可能再修改(string就是典型的不变模式);通过不变模式可以做到对象共享;
 
 2、如果用Stirng str = “abc”来创建一个对象时,则系统会先在串池中寻找有没有“abc”这个字符串。
  如果有则直接将对象指向串池中对应的地址,如果没有则在串池中创建一个“abc”字符串。
  所以:String str1 = “abc”;
        String str2 = “abc”;
        Str1 = = str2 返回值是ture;他们的地址是一样的。
  也就是说str1和str2都指向了代码空间中相同的一个地址,而这个地址空间保存就是是字符串”abc”;

 如果用String str = new String(“abc”)则直接在堆空间开辟一块存储空间用来存放”abc”这个字符串。
  所以:String str1 = new String(“abc”);
        String str2 = new String(“abc”);
        Str1 = = str2 返回值是false;他们的地址是不一样的。
  也就是说str1和str2分别指向了堆空间中不同的两个地址,而这两个地址空间保存的都是字符串”abc”;

 3、java.lang下的StringBuffer类。
  对于字符串连接
  String str=”1”+”2”+”3”+”4”;
  产生:
       12
       123
       1234
  会在串池中产生多余对象,而真正我们需要的只有最后一个对象,用这种方式进行字符串连接时,不管在时间上还是在空间上都会造成相当大的浪费。
   所以我们应该使用 StringBuffer(线程安全的) 或者 StringBuilder(线程不安全的)
  解决方案:
  String s;
  StringBuffer sb = new StringBuffer(“1”);
  Sb.append(“2”);
  Sb.append(“3”);
  Sb.append(“4”);
  S = sb.toString();
  解决后的方案比解决前在运行的时间上相差2个数量级。

五、包装类

 基本类型的包装类,为了提高效率
 
 JAVA为每一个简单数据类型提供了一个封装类,使每个简单数据类型可以被Object来装载。
 除了int(Integer)和char(Character),其余类型首字母大写即成封装类类型名。

 转换字符的方式:
 int I=10;
 String s=I+” ”;
 String s1=String.valueOf(i);

 Int I=10;
 Interger I_class=new integer(I);

 封装类.字符串.基本类型


 三种类型六种转换

        new Integer() 或Integer.valueOf()
 int--------------------------------------->Integer

              i.intValue()
 Integer----------------------------------->int

    Integer.toString(...) 或  String s=100+" "
 int--------------------------------------------------->String

    Integer.parseInt("...")
 String---------------------------------->int

      i.toString()
 Integer-------------------------------->String

  Integer.valueOf("...") 或new Integer("...")
 String------------------------------------------------>Integer


 需要了解的方法:
 
 Integer类中:
  int intValue()
  static int parseInt(String s)  默认为十进制
  static int parseInt(String s,int radix) 第二个参数是进制(2--36)
  String toString()
  static String toString(int i)
  static String toString(int i,int radix)
  static Integer valueOf(int i)
  static Integer valueOf(String s)
  static Integer valueOf(String s,int radix)

论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics