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>表示的类型模板, 实际是什么类型, 就是什么类型.

  • 相关阅读:
    Linux Shell中的特殊符号和含义简明总结(包含了绝大部份)
    Linux学习笔记:cat、tac、more、less、head、tail查看文件内容
    Linux学习笔记:pwd与dirs的区别
    Linux学习笔记:nohup & 后台任务
    Linux学习笔记:输入输出重定向 >>命令
    Linux学习笔记:vi常用命令
    Linux学习笔记:touch新建文件、修改访问、改动时间
    Linux学习笔记:mkdir创建文件夹
    Linux学习笔记:mv移动或文件重命名
    Shell学习笔记:#*、%*字符串掐头去尾方法
  • 原文地址:https://www.cnblogs.com/moveofgod/p/2859832.html
Copyright © 2011-2022 走看看