zoukankan      html  css  js  c++  java
  • Java 05

    /* video 12 */

    Enumeration 枚举 ( 想象成组合在一起的项 )

    public static final int ONE = 1;  //  java 一般用以前的方式,就是这种,而不是新的枚举类型
    switch (num) {
        case ONE: println("one"); break;
    } 使用这种方法
    在 Java 5 版本里,有了 enum 类型,但是还是使用之前的方式最多
    public enum WeekDAY { SUN, MON, TUE, WED, THU, FRI, STA };

    char -- character
    char ch = 'a'; 必须用单引号 只能放单个字符,对于计算机来说,char 类型只不过是枚举,象以上的定义,比如 public static final char a = 1;
    ASCII 对应了转换( 标准枚举 )
    \ 比较特殊,可以不是单个字符
    char ch = S.charAt(0) ; 读 字符串 S 中的第一个字符
    因为字符顺序已经定下来了。所以可以做数值运算 if ( ch>= 'A' && ch <= 'Z' ) 得到的就是大写字母,因为顺序
    return ( ch-'A') + 'a'); 将大写字母转换成小写, 首先 ch - 'A' 是找到位序, 'a' + 位序就是对应的小写字母。
    还可以用来记数,
    for ( char ch='A'; ch <='Z'; ch++)

    String
    string str = readLine(); “hello” 这个是字符串常量,不能修改
    对比 string , char

    char                               string
    标量类型                            类
    字符可以自己转换成大写字母

    str.toUpperstring(); 因为在 java 中,字符串不能改变所以,必须写成 str = str.toUpperCase(); 这样将 str 转换成大写 说白了是创建了一个新的 str
    不可以判断 if ( str1 == str2 ) , 因为 例如: str1 = "Hello" , str2 = "Hello" , 虽然,都是 Hello, 但是它们在内存中却是存在于两个内存地址中,所以判断 str1== str2,

    因为这两个都是指针,所以,肯定不相等。 假设, 虽然程序中很少有人这么用   , String str1, str2 ;   str1 = str2 = "Hello";  这个时候因为 str1 和 str2 指向的是同一块内存,所以,

    就可以使用 if ( str1 == str2 ) , 并且 str1 也确实等于 str2. ( 还是想内存结构 )
    用类方法 if ( str1.equals(str2) ) {
    for (int i=0; i<str.length(); i++) {    // 将字符串转换成大写字母
        char ch = str.charAt(i);
        result += character.toUpper(ch);
    }

    /* video 14 */
    内存地址是16进制数 例如 : A000

    static variables / constant ( 特殊地方存储 )
    dynamic variables ( new , 堆 )
    local variables ( stack 栈 )

    分层
    1. 特殊内存
    2. 堆 ( 向下 )
    3. 栈 ( 向上 )
    如果栈和堆的分配空间重合了,那么程序就费了 ( 待作图 )

    image

    堆和栈中的内存都在 动态的增加或减少,如果都增加到,在内存中 堆和栈的内存重合了,那么程序就崩溃了。

    /* video 15 */


    函数传递时,如果传递的是实例变量,比如 Point p = new Point(1,1); 然后将这个 p 传递给了一个函数,其实,传递的就是指针,该指针指向堆内存,所以,
    此函数传递,跟 C 中的指针传递具有同样效果,那就是在函数内部更改的东西,在函数外部同样有效。但是,其实 它也是在传递值,只不过这个值是个间接的内存地址。
    基本类型    类类型
    int         Integer
    double      Double
    ...

    FILES
    import java.io.*;
    1. OPEN
        object->file
    2. reading file
        line by line
    3. close

    EXCEPTION
    例如 读取一个档案时,如果突然档案被别人删除了。那么这就是个 异常
    throw 如果没有捕获异常,程序结束
    try {
        code for file access. // 上边的例子, 引发异常后,后边的代码就不会被执行,而是到 catch 段执行
    } catch ( IOException ex ) {
        deal with exception
    }

    private BufferReader ( String prompt ) {
        BufferReader rd = null;
        while ( rd == null ) {
            try {
                string name = readline( prompt );
                rd = new BufferReader( name );
            } catch ( IOException ex ) {
                println("bad time");
            }
        }
        return rd;
    }

    危险操作使用 try , 使用的越少越好
    reading file 就很危险,因为如果此时删除了该文档,就费了。
    throw new ErrorException(ex); 将该异常再次抛出

    /* video 16 */


    数组
    - ordered
    - 同一类型
    定义
    int[] myArr = new int[5];
    默认都被初始化了

    数组的初始化:

    1. 直接初始化, int[] arr = {1, 2, 3, 4, 5};

    2. 通过 for 循环来一个一个的赋值
    myArr[0] 引用第一个元素
    GOval[] circles = new GOval[4];    // 只是分配了数组空间用来存放引用-指针,但是,只是个位置,里边指针的具体指向还没有分配空间。所以里边存储的内容是 null
    cicle[0] = new GOval(0, 0, 100, 100); 这样,就分配了堆存储空间,并将数组内的指针指向正确的位置。
    数组的有效尺寸和实际尺寸,实际尺寸是声明时数组的长度,而有效尺寸是指实际使用情况。
    动态尺寸数组 数组.length 这个长度是声明长度,有效常数不知道

    int[] arr = {2, 4, 6, 8    };

    ArrayList 数组表,  ( template )
    import java.util.*;

    ArrayList<String> strlist = new ArrayList<String>();
    strlist 调用无参数的构造函数。构造函数名字 ArrayList<String>

    ArrayList 是java实现链表的一个很好的工具.

    ArrayList<T> tlist = new ArrayList<T>(); 符号 <T> 是类型参数, 称为模板或参数化类.

    String line = "hello";
    strList.add(line);    //动态增加
    strList.add("there");    // 第2个元素就会存储 there
    strList.size();    // 有效长度
    strList.get(i);    // i index 的 string

    double[] scores = new double[N-JUDGES] 内存结构

    image

    由图可知, scores 是栈变量, 里边存放的是堆内存地址, 而每个数组元素存放在堆中

    Student[] topStudents = new Student[5];

    topStudents[0] = new Student(“Hermione Granger” 314159);

    image

    可以看到每个数组元素里也存放的是该元素的首地址, 有点类似指针数组, 或二级指针。

    <T>表示的类型模板, 实际是什么类型, 就是什么类型.

  • 相关阅读:
    ubuntu下安装maven
    159.Longest Substring with At Most Two Distinct Characters
    156.Binary Tree Upside Down
    155.Min Stack
    154.Find Minimum in Rotated Sorted Array II
    153.Find Minimum in Rotated Sorted Array
    152.Maximum Product Subarray
    151.Reverse Words in a String
    150.Evaluate Reverse Polish Notation
    149.Max Points on a Line
  • 原文地址:https://www.cnblogs.com/moveofgod/p/2859832.html
Copyright © 2011-2022 走看看