solimh 发表于 2011-1-24 12:27:29

java 私塾第六、七章笔记整理

java 私塾第六、七章笔记整理

第六章 常见类的使用

一. Object类

    equals方法:]object类的equals方法作用同 = = 相同,比的是地址。
    equals只能比较引用变量,= =还可以比较基本数据类型。

      public boolean equals(Object obj) {
            return (this == obj);
      }

    特例:当equals方法进行比较时,对类File,String,Date及包装类来说,是比较类型及内容,而不考虑引用的是否是同一实例。

    Integer 类中重写的equals方法:
      public boolean equals(Object obj) {
             if (obj instanceof Integer) {
                return value == ((Integer)obj).intValue();
             }
             return false;
      }

    先比较是否是同一数据类型,再比较值是否相等。

    hashcode方法
      (1) 同一程序执行期间,对同一个对象调用hashcode,必须返回相同的整数结果。
      (2) 如果两个对象被equals方法视为相等,那么对这两个对象调用hashcode方法必须获得相同的整数结果。
      (3) 如果两个对象被equals方法视为不相等,那么对这两个对象调用hashcode方法不必产生不同的整数结果。
    如果两个对象相同,那么他们的hashcode值一定要相同;如果两个对象的hashcode相同,他们并不一定相同。

    toString方法:
      public String toString() {
            return getClass().getName() + "@" + Integer.toHexString(hashCode());
      }

    object类中实现的toString方法是返回当前对象的类型和内存地址信息,其他一些子类(如String, Date)中进行了重写,也可根据需要在用户自定义类型中重写toString()方法。

    除了显示的调用toString(0方法外,进行String与其他数据类型连接操作时,会自动调用toString()方法
      (1) 引用类型数据直接调用其toString()方法转换为String类型。
      (2) 基本数据类型先转换为对应的包装类型,再调用该包装类型toString()方法转换为String类型。
      System.out.println()方法输出引用类型数据时,也先调用了该对象的toString()方法,然后再将返回的字符串输出。

二.String 类
    String color = “blue”;
    只有一个对象存放在栈内存里。
    String color = new Stirng(“blue”);
    两个对象一个在栈内存一个在堆内存。

    String 的常用方法
      Length()
            返回String的长度,按照char返回长度。
            与数组不同,String是length()方法,数组是length属性。
      charAt(int index)
            获得字符串指定位置的字符。
      getByte()
            将String编码为byte序列,并将结果存储到一个新的byte数组中。
      getChars(int srcBegin, int srcEnd,char [] dst, int dstBegin)
            拷贝字符串的部分字符序列到指定的字符数组的指定位置。
    对于字符串中的汉字,是按照char来计算的,一个中文汉字占两个字节,用字节数减去char的length()的长度,即为汉字数。
public class TestString{
    public static void main(String [] args){
      String str="我们abc";
      char [] a= new char ;
      System.out.println(str.length());
      System.out.println(str.charAt(2));
      System.out.println("汉字个数:" + (str.getBytes().length-str.length()));
      str.getChars(0,4,a,1);
      for(int i: a)
      System.out.println((char)i);
    }
}输出结果:
      5
      a
      汉字个数:2

      我
      们
      a
      b

    字符串比较
    方法 compareTo(String s)
    比较两个字符的大小,返回0表示相等。返回大于0的数表示前边的字符串大于后面的字符串,返回小于0的表示后边的字符串大于前边的,区分大小写。public class TestString{
    public static void main(String [] args){
      System.out.println("abc".compareTo("ABc"));
    }
}输出结果:
    32

    方法 compareToIgnoreCase(String s)
      忽略大小写比较两个字符串的大小。
    查找字符串中的字符或子串
    方法indexOf()
      返回第一次找到时的下标,如果没找到则返回-1。
    方法lastIndexOf(int ch, int fromIndex)
      从指定位置往回查找,返回找到的最大的字符下标的位置。若未找到,返回-1。
    方法startWith(String prefix)
      测试此字符串是否以指定的前缀开始
    方法startsWith(String prefix, int toffset)
      测试此字符串从指定索引开始的子字符串是否以指定前缀开始。
    方法endsWith(String suffix)
      测试此字符串是否以指定的后缀结束。

    从当前字符串中抽取子字符串
    方法subString(int beginIndex)
      返回新的字符串:当前字符串的子串。该子串从指定位置开始,并一直到当前字符串结束为止。
    方法subString(int beginIndex, int endIndex)
      返回新的字符串:当前字符串的字串
      该字串从指定位置开始,到指定位置结束。

    字符串拼接
    方法 concat(String s)
      拼接两个字符串返回一个新字符串。源字符串不会被修改。

    类String的成员方法valueOf
      将参数的值转换为字符串
      public static String valueOf(Object obj) {
            return (obj == null) ? "null" : obj.toString();
      }

    字符串分解
    方法 split(String regex)根据正则表达式的匹配拆分此字符串,得到拆分好的字符串数组。
    方法replace(char1,char2)
    方法toUpperCase
    方法trim()
    方法toString()
    方法toCharArray()
public class TestString{
    public static void main(String [] args){
      String str = "abcdefabc";
      String s2 = "ABC";
      int a = 100;
      String s3 = "这里,是java,私塾";
      String [] s4= s3.split(",");
      String s5 = "   abcdefabc   ";
      System.out.println(str.indexOf("def"));
      System.out.println(str.lastIndexOf("abc",8));
      System.out.println(str.startsWith("a"));
      System.out.println(str.startsWith("a",6));
      System.out.println(str.substring(3,6));
      System.out.println(str.concat(s2));
      System.out.println(String.valueOf(a));
      System.out.println(String.valueOf(a));
      for(int i=0; i<s4.length; i++)
      System.out.println(s4);
      System.out.println(str.replace('a','o'));
      System.out.println(str.toUpperCase());
      System.out.println(s5.trim());
      System.out.println(str.toCharArray());
    }
}输出结果:
    3
    6
    true
    true
    def
    abcdefabcABC
    100
    这里
    是java
    私塾
    obcdefobc
    ABCDEFABC
    abcdefabc
    abcdefabc

三.正则表达式
正则表达式是用于进行文本匹配的工具,也是一个匹配的表达式。

四.StringBuffer类和StringBuilder类
    类String---字符串对象一旦创建,其内容不能再被修改
    类StringBuffer---内容可以被修改;
      除了字符的长度外还有容量的概念;初始容量为16字符。
      通过动态改变容量的大小,加速字符管理。

    方法 length()
      返回 StringBuffer 的长度
    方法 capacity()
      返回StringBuffer 的容量
    方法setLength(int newLength)
      增加或减小 StringBuffer 的长度
    方法 charAt(int index)
      返回StringBuffer 对象中指定位置的字符
    方法setCharAt(int index, char ch)
      设置 StringBuffer 对象中指定位置的字符
    方法 getChars(int srcBegin, int srcEnd,
      Char[] dst, int dstBegin)
      将StringBuffer 对象中指定的字符子序列,拷贝到指定的字符数组(dst)
    方法 reverse()
      将StringBuffer 对象中的字符序列按逆序方式排列,可用作字符串倒序
    方法append(…)
      允许数值类型的值添加到StringBuffer对象中
    方法insert()
      允许将各种数据插到StringBuffer 对象的指定位置
    方法 delete(int start, int end) 和 deleteCharAt(int index)
      允许删除StringBuffer 对象中的指定字符
public class TestString{
    public static void main(String [] args){
      StringBuffer sb = new StringBuffer("abcdefg");
      char [] a = new char;
      System.out.println(sb.length());
      System.out.println(sb.capacity());
      sb.setLength(10);
      System.out.println(sb.length());
      sb.setCharAt(1,'A');
      System.out.println(sb);
      sb.getChars(0,5,a,0);
      for(int i=0; i<a.length; i++)
      System.out.println(a);
      System.out.println(sb.reverse());
      System.out.println(sb.append("aaaa"));
      System.out.println(sb.delete(0,3));
    }
}输出结果:
      7
      23
      10
      aAcdefg
      a
      A
      c
      d
      e



         gfedcAa
         gfedcAaaaaa
      gfedcAaaaaa

五.Math类(final类,不可继承)
    1:常数
       PI :double,圆周率
       E :double,自然对数
    2:截取(注意方法的返回类型)
       double ceil(double d)
         返回不小于d 的最小整数
       double floor(double d)
         返回不大于d 的最大整数
       int round(float f)
         返回四舍五入后的整数
       long round(double d)
         返回四舍五入后的整数
    3:变换(int long float各种类型相似)
       double abs(double d)
         返回绝对值
       double min(double d1, double d2)
         返回两个值中较小的值
       double max(double d1, double d2)
         返回两个值中较大的值
    4:对数
       double log(double d)
         自然对数
       double exp(double d)
         E 的指数
    5:其它
       double sqrt(double d)
         返回平方根
       double random()
         返回随机数

六.如何给Java代码设置系统属性?如何在程序中使用它们
    设置:Java有一个类properties描述了名字和值之间的映射;
    使用例子:System.getProperties();
          System.setProperties();

七.简述properties文件的结构和基本用法
    结构:(设置在一个扩展名为properties的文件,内容为key,value的映射)
      key=value
    用法:
      System.getProperties 方法返回系统的Properties 对象。
      System.getProperty(String propertyName)方法返回对应名字属性的值。
      System.getProperty(String name, String value)重载方法当没有name指定的属性 时,返回value 指定的缺省值。


solimh 发表于 2011-1-24 12:29:16

第七章 抽象类和接口

一. 抽象类
    用abstract修饰的类就是抽象类
    抽象类不能直接使用,必须用子类去实现抽象类,然后使用其子类的实例。
    在下列情况下,一个类成为抽象类
      (1) 当一个类的一个或多个方法是抽象方法时
      (2) 当类是一个抽象类的子类,并且不能为任何抽象方法提供任何实现细节或方法主体时
      (3) 当一个类实现一个接口,并且不能为任何抽象方法提供实现细节或方法主体时
    “抽象类一定包含抽象方法”是错误的。当时反过来说“包含抽象方法的类一定是抽象类”就是正确的了。

二.接口
    接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。
   接口也可以继承,子接口可以继承父接口中的常量和抽象方法。
   接口特性:
      (1) 接口中声明的属性默认为,也只能是 public static final的,所以在常量声明时可以省略这些修饰符。
      (2) 接口中只能定义抽象方法,这些方法默认为,也只能是public abstract的,所以在声明这些方法时也可以省略这些修饰符。
      (3) 和继承父类相似,java类可以实现接口。

    接口的作用:
      (1) 声明方法,期望一个或更多的类来实现该方法。
      (2) 揭示一个对象的编程接口,而不揭示类的实际程序体。
      (3) 捕获无关类之间的相似性,而不强迫类关系。
      (4) 可以作为参数传到其他对象上调用的方法中。

三.多重接口
    一个类只可以继承一个父类,但可以实现多个接口,而不需要在继承树中同属一个族。一个类实现多个接口就被称为多重接口。

四.接口基本思想
    封装,隔离
    接口及相关机制的最基本作用在于:通过接口可以实现不相关类的相同行为,而不需考 虑这些类之间的层次关系。
    根据接口可以了解对象的交互界面,而不需了解对象所属的类。
    面向对象程序设计讲究“提高内聚,降低耦合”。

五.接口作为类型使用
    接口的使用:
    ClassAa = new ClassA();正确
    InterfaceAa = new InterfaceA(); 错误
    InterfaceAa = new ImplementsA(); 正确
    后边就可以使用a.method()来调用接口的方法了。

有需要的可以到java 私塾官网下载完整笔记:ww w.javass.cn/javapeixunzlxz/zlxz.html
页: [1]
查看完整版本: java 私塾第六、七章笔记整理