zoukankan      html  css  js  c++  java
  • Java基础

    1、+=符号的扩展

    public static void main(String[] args){
    short s = 1;
    s+=1;
    System.out.println(s);
    }

    分析: s += 1 逻辑上看作是 s = s + 1 计算结果被提升为int类型,再向short类型赋值时发生错误,因为不能将取值范围
    大的类型赋值到取值范围小的类型。但是, s=s+1进行两次运算 , += 是一个运算符,只运算一次,并带有强制转换的特点,
    也就是说 s += 1 就是 s = (short)(s + 1) ,因此程序没有问题编译通过,运行结果是2.

    2、常量和变量的运算

    public static void main(String[] args){
    byte b1=1;
    byte b2=2;
    byte b3=1 + 2;
    byte b4=b1 + b2;
    System.out.println(b3);
    System.out.println(b4);
    }

    分析: b3 = 1 + 2 , 1 和 2 是常量,为固定不变的数据,在编译的时候(编译器javac),已经确定了 1+2 的结果并没
    有超过byte类型的取值范围,可以赋值给变量 b3 ,因此 b3=1 + 2 是正确的。
    反之, b4 = b2 + b3 , b2 和 b3 是变量,变量的值是可能变化的,在编译的时候,编译器javac不确定b2+b3的结果是什
    么,因此会将结果以int类型进行处理,所以int类型不能赋值给byte类型,因此编译失败。

    3、循环语句的区别

    for 和 while 的小区别:
    控制条件语句所控制的那个变量,在for循环结束后,就不能再被访问到了,而while循环结束还可以继
    续使用,如果你想继续使用,就用while,否则推荐使用for。原因是for循环结束,该变量就从内存中消
    失,能够提高内存的使用效率。
    在已知循环次数的时候使用推荐使用for,循环次数未知的时推荐使用while。

    4、笔记一

    1、字符常量用单引号,中间有且只有一个字符,不可以多个,也不可以没有;
    2、字符串常量用双引号,可以为空;
    3、不能直打印 null4、java有六种常量;
    5、java的数据类型:
        (1)基本数据类型;(4类8种)
            1、整数型 byte  short  int  long(数据表示范围不一定和内存相关,例如长整形和单精度浮点数)
            2、浮点型 float  double
            3、字符型 char
            4、布尔型 boolean
        (2)引用数据类型;
            1、字符串
            2、类
            3、接口等
    (3)byte 一个字节 -128~127
    short 两个字节
    int 四个字节
    long 八个字节
    float 四个字节
    double 八个字节
    char 两个字节
    boolean 在Java中没有明确指定它的大小 注意事项:
    1、字符串不是基本数据类型,而是引用类型; 2、浮点型可能只是一个近似值,不是精确的值; 3、数据范围与字节数不一定相关,例如float数据范围比long更加广泛,但是float是4字节,long是8字节; 4、浮点数当中默认类型是double。如果一定要使用float类型,需要加上一个后缀F。 如果是整数,默认类型是int类型,如果要使用long类型,需要加上一个后缀L。推荐使用大写字母后缀。 6、当数据类型不一样时,会发生数据类型转换 1、自动类型转换(隐式) 1、代码不需要进行特殊处理,自动完成; 2、规则:数据范围从小到大 2、强制类型转换(显示) 1、特点:代码需要进行特殊的数据格式处理,不能自动完成; 2、格式:范围小的类型 范围小的变量(名) = (范围小的类型) 原本范围大的数据类型 注意事项: 1、byte/short/char 这三种类型都可以进行数学运算,例如“+”; 2、byte/short/char 这三种类型在进行数学运算时,都会先被提升为 int 类型,然后在进行计算; 3、boolean 类型不能发生数据类型转换; 4、'0' --- 48 'A' --- 65 'a' --- '97' 7、四则运算符 注意事项: 1、一旦进行运算的数据类型不一样,那么结果将会是数据类型范围大的那种; 2、“+” 常见的三种用法: 1、对于数值来说,那就是加法; 2、对于字符串char来说,在计算之前,char会被提升为int,然后在进行计算,char 类型和int 类型的对照关系表:ASCII、Unicode; 3、对于字符串String(首字母大写,但不是关键字)来说,加号代表连接操作; 任何数据类型和字符串进行连接的时候,结果都会变成字符串; 8、自增运算符 使用方式: 1、单独使用,不和其他操作混合,自己独立成为一个步骤; 2、混合使用; 使用区别: 1、在单独使用的时候,前++和后++没有区别; 2、在混合使用的时候,有【重大区别】 A、如果是【前++】,那么变量【立刻马上+1】,然后拿着结果进行使用; B、如果是【后++】,那么变量首先使用本来的数值,然后再让【变量+19、与“&&”、或“||”具有短路效果:如果根据左边可以判断得到最终结果,那么右边代码将不再执行,从而节省一定的性能; 注意事项: 1、逻辑运算符只能用于boolean值; 2、与或需要左右各自有一个boolean值,但是取反只要有唯一的一个boolean值即可; 10、三元运算符 格式: 数据类型 变量名称 = 条件判断 ? 表达式A : 表达式B; 注意事项: 1、必须保证表达式A和表达式B都符合左侧数据类型的要求; 2、三元运算符的结果必须被使用; 11、方法 定义一个方法的格式 public static void 方法名称() { 方法体 } 12、编译器的两个优化 /* 对于byte/short/char三种类型来说,如果右侧赋值的数值没有超过范围, 那么javac编译器将会自动隐含地为我们补上一个(byte)(short)(char)。 1. 如果没有超过左侧的范围,编译器补上强转。 2. 如果右侧超过了左侧范围,那么直接编译器报错。 */ public class Demo12Notice { public static void main(String[] args) { // 右侧确实是一个int数字,但是没有超过左侧的范围,就是正确的。 // int --> byte,不是自动类型转换 byte num1 = /*(byte)*/ 30; // 右侧没有超过左侧的范围 System.out.println(num1); // 30 // byte num2 = 128; // 右侧超过了左侧的范围 // int --> char,没有超过范围 // 编译器将会自动补上一个隐含的(char) char zifu = /*(char)*/ 65; System.out.println(zifu); // A } } /* 在给变量进行赋值的时候,如果右侧的表达式当中全都是常量,没有任何变量, 那么编译器javac将会直接将若干个常量表达式计算得到结果。 short result = 5 + 8; // 等号右边全都是常量,没有任何变量参与运算 编译之后,得到的.class字节码文件当中相当于【直接就是】: short result = 13; 右侧的常量结果数值,没有超过左侧范围,所以正确。 这称为“编译器的常量优化”。 但是注意:一旦表达式当中有变量参与,那么就不能进行这种优化了。 */ public class Demo13Notice { public static void main(String[] args) { short num1 = 10; // 正确写法,右侧没有超过左侧的范围, short a = 5; short b = 8; // short + short --> int + int --> int // short result = a + b; // 错误写法!左侧需要是int类型 // 右侧不用变量,而是采用常量,而且只有两个常量,没有别人 short result = 5 + 8; System.out.println(result); } 13、switch /* switch语句使用的注意事项: 1. 多个case后面的数值不可以重复。 2. switch后面小括号当中只能是下列数据类型: 基本数据类型:byte/short/char/int 引用数据类型:String字符串、enum枚举 3. switch语句格式可以很灵活:前后顺序可以颠倒,而且break语句还可以省略。 “匹配哪一个case就从哪一个位置向下执行,直到遇到了break或者整体结束为止。” */ public class Demo08SwitchNotice { public static void main(String[] args) { int num = 2; switch (num) { case 1: System.out.println("你好"); break; case 2: System.out.println("我好"); // break; case 3: System.out.println("大家好"); break; default: System.out.println("他好,我也好。"); break; } // switch } } 14、三种循环的区别 /* 三种循环的区别。 1. 如果条件判断从来没有满足过,那么for循环和while循环将会执行0次,但是do-while循环会执行至少一次。 2. for循环的变量在小括号当中定义,只有循环内部才可以使用。while循环和do-while循环初始化语句本来就在外面,所以出来循环之后还可以继续使用。 */ 15、continue /* 另一种循环控制语句是continue关键字。 一旦执行,立刻跳过当前次循环剩余内容,马上开始下一次循环。 */
  • 相关阅读:
    Ant简单工程的构建
    [转载] 无所不能的“蚂蚁”--Ant
    引体向上高级技巧:停顿式引体向上!
    引体向上腰酸?下背痛?你做对了吗?
    划船训练常见错误:含胸驼背肩胛骨活动不足
    引体向上
    仰卧飞鸟:仰卧哑铃飞鸟图解教程
    蝶机夹胸:蝴蝶机夹胸夹胸/飞鸟动作图解教程
    史密斯卧推:杠铃史密斯下斜卧推、上斜机卧推、平板卧推动作图解
    练胸秘籍:胸肌训练5大重点
  • 原文地址:https://www.cnblogs.com/linyuhong/p/10511778.html
Copyright © 2011-2022 走看看