我的java成长之路----day02

目录

第一章.数据类型转换

1.自动转换(隐式)

1.1 特点

1.2 规则

2.强制转换(显式)

1.1 特点

1.2 格式

1.3 注意事项

 数据溢出

精度损失

 byte,short,char都能发生数学运算,例如 "+"

3.ASCII码表

第二章.运算符

1.算术运算符

1.1 加减乘除,取模运算

1.2 四则运算符中的"+" :

1.3 自增自减运算符

2.赋值运算符

1.1 基本赋值运算符

1.2 复合运算符

3.比较运算符

1.种类

2.注意事项

4.逻辑运算符

1.种类:

 2.短路效果

3.注意事项

 5.三元运算符

第三章.方法入门

1.概述:

2.方法的定义:

注意事项:

3.方法的调用:

4.练习

补:

第四章.JShell脚本工具

1.JShell脚本工具:

使用方法:

2.编译器的优化


第一章.数据类型转换

1.自动转换(隐式)

1.1 特点

代码不需要特殊处理,自动完成

1.2 规则

数据范围从小到大

1. byte 的取值范围为:-128到127

2. short 的取值范围为:-32768到32767

3. int 的取值范围为:-2147483648到2147483647

4. long 的取值范围为:-9223372036854775808到-9223372036854775807

package day20;

/*
当数据类型不同时,将会发生数据类型转换
 */

public class Demo01 {
    public static void main(String[] args) {
        System.out.println(1024);   //这是一个整数,默认数据类型为int
        System.out.println(3.14);   //这是一个浮点数,默认数据类型为double


        long num1 = 100;
        System.out.println(num1);
        //左面是long类型,右面是默认的int类型,一个等号代表赋值,把右面的int常量,交给左面的long变量储存
        //int ---> long ,符合数据范围从小到大的规则,发生了自动类型转换

        double num2 = 2.5F;
        System.out.println(num2);
        //左面是double类型,右面是float类型,左右不一样
        //float --->double,符合数据范围从小到大,发生了自动类型转换

        float num3 = 30L;
        System.out.println(num3);
        //左面是float类型,右面是long类型,左右不一样
        //float --->long,符合数据范围从小到大,发生了自动类型转换
    }

}

2.强制转换(显式)

1.1 特点

代码需要特殊格式处理,不能自动完成

1.2 格式

范围小的类型 范围小的变量名 = (范围小的类型) 原本范围大的数据

package day20;

public class Demo02 {
    public static void main(String[] args) {
        int num = (int)1000L;
        System.out.println(num); //int --> long ,不是从小到大,不能发生自动类型转换
    }
}

1.3 注意事项

1.强制类型一般不推荐使用,因为有可能发生数据溢出,精度损失

 数据溢出

package day20;

public class Demo03 {
    public static void main(String[] args) {
        int num = (int) 6000000000L;
        System.out.println(num);
    }
}


输出结果:1705032704   //较大的值强制转换为范围小的数据类型,
                     //发生了数据溢出

精度损失

package day20;

public class Demo04 {
    public static void main(String[] args) {
        int num =  (int) 2.5;
        System.out.println(num);
        //2.5为double类型,强制转换为int类型,数据值变成了2,发生了精度损失
        //不是四舍五入,是直接舍弃小数位
    }
}

 byte,short,char都能发生数学运算,例如 "+"

package day20;

public class Demo05 {
    public static void main(String[] args) {
        char var = 'a';
        System.out.println(var + 1);
    }
}

输出结果:98

/*计算机中的数据都是用二进制存储的,所以当在进行数学运算时,
会先char类型的数据转换成int类型的数值在进行运算
*/

package day20;

public class Demo05 {
    public static void main(String[] args) {

        byte num1 = 40 ;    //右侧数值范围不能超出在侧的数据类型范围
        byte num2 = 50 ;
        int result = num1 +num2 ;  // byte +byte --> int + int = int
        System.out.println(result);

    }
}
        short num3 = 60;
        short result2 = (short) (num1 + num3);
        System.out.println(result2);

    //当运算结果数值没有超出接受数据类型的范围时,可以使用强制数据类型转换,否则会发生数据溢出

3.ASCII码表

除了这张表还有一张表,叫做万国码(Unicode),也是数字和符号对照关系,但比ASCII码表涵盖更广

第二章.运算符

  1. 运算符: 进行特定操作的符号 

  2. 表达式: 用运算符连接起来的式子,叫做表达式

1.算术运算符

1.1 加减乘除,取模运算

  1. 对于一个整数的表达式来说,除法用的是整除,整数除以整数结果仍然是整数,只看商不看余数;
  2. 取模只对整数才有意义
  3. 一旦运算当中有数据类型不同的数据,那么结果是数据类型范围大的那种
package day20;

public class Demo06 {
    public static void main(String[] args) {
        int num1 = 20;
        int num2 = 30;
        System.out.println(num1 + num2);  // " + " 加     结果:50
        System.out.println(num1 - num2);  //" - " 减      结果:-10
        System.out.println(2 * num1);     //" * " 乘      结果:40
        System.out.println(num1 / 2);     //" / " 除      结果:10
        System.out.println(num1 % 3);     //" % " 取模    结果:2
        
        double result = num1 + 2.5;       
        System.out.println(result);       //结果:22.5
    }
}

1.2 四则运算符中的"+" :

1.对于数值来说, 就是加法

2.对于字符char类型来说,在计算之前,char会被先提升为int类型(按照ASCII或者Unicode),在进行计算

3.对于字符串String类型来说,加号表示连接操作

package day20;

public class Demo07 {
    public static void main(String[] args) {
        int num1 = 6;
        int num2 = 7;
        int result = num1 +num2;
        System.out.println(result);

        char var = 'a';
        int result2 = num1 + var;
        System.out.println(result2);

        String str1 = "hello";
        String str2 = "java";
        System.out.println(str1 + str2);
        System.out.println(str1 + num1 + num2);
        System.out.println(str1 +(num1 + num2));  //小括号优先级最高
    }
}

运行结果:
13
103
hellojava
hello67
hello13

1.3 自增自减运算符

  1. 含义: 让一个变量自增一个数字,或者让一个数字自降一个数字
  2. 使用格式: 放在变量名称之前,或者放在变量名称之后,例如: ++num , num++
  3. 使用方法:

单独使用:不和其他任何操作混合使用,自己独自成为一个步骤

混合使用:和其他操作混合,例如与赋值混合,或者与打印操作混合,等

     4.使用区别:

  1. 单独使用时,前++和后++是相同的,没有任何区别
  2. 在混合使用时,有重大区别
  3. A.如果是前++,那么结果立刻马上加1,<先加后用>
  4. B.如果是后++,那么结果先运算结果加一,<先用后加>

自增自减只能对变量用

package day20;

public class Demo08 {
    public static void main(String[] args) {
        int num1 = 6;
        System.out.println(num1);

        ++num1;
        System.out.println(num1);     // 7 单独使用前++

        num1++;
        System.out.println(num1);     // 8 单独使用后++

        System.out.println(++num1);   // 9  与打印混合使用,num数值为8,立刻加一,然后打印输出

        System.out.println(num1++);   // 9 与打印混合使用,num数值为9, 先执行打印操作,然后在结果加一

        int num2 = 40;
        int result = --num2;
        System.out.println(result);  // 39
        System.out.println(num2);    // 39 前--,先减一,在赋值给result

        int num3 = 39;
        int result2 = num3--;
        System.out.println(result2); // 39
        System.out.println(num3);    // 38 后--,先赋值给result2 ,再减一

        int x = 10;
        int y = 20;
        int result3 = ++x + y--;     // 11 + 20 = 31
        System.out.println(result3); // 31
        System.out.println(x);       // 11
        System.out.println(y);       // 19

    }
}

2.赋值运算符

1.1 基本赋值运算符

int a = 30;

1.2 复合运算符

  1. += a += 2,相当于 a =a+2
  2. -= a -= 3,相当于a =a-3
  3. *= a *= 4,相当于 a =a*4
  4. /= a /= 5,相当于a = a/5
  5. %= a %= 6,相当于a = a%5
  6. package day20;
    
    public class Demo09 {
        public static void main(String[] args) {
            int a = 10;
            a += 5 ;
            System.out.println(a);
    
            int b = 6;
            b -= 3 ;
            System.out.println(b);
    
            int c = 8;
            c *= 2 ;
            System.out.println(c);
    
            int d = 10;
            d /= 2 ;
            System.out.println(d);
    
            int f = 20;
            f %= 3 ;
            System.out.println(f);
        }
    }
    运行结果:
    15
    3
    16
    5
    2
    

3.比较运算符

1.种类

  1. "=="
  2. "
  3. ">"
  4. ">="
  5. "
  6. "!="
    public class Demo10 {
        public static void main(String[] args) {
            System.out.println(10 > 5);
    
            int num1 = 12;
            int num2 = 20;
            System.out.println(num1 < num2);
    
            System.out.println(num1 >= 100);
            System.out.println(num2 <= 20);
            System.out.println(num1 == 12);
            System.out.println(num1 != 12);
        }
    }
    运行结果:
    true
    true
    false
    true
    true
    false

    2.注意事项

比较运算符的结果一定是个布尔值(bollean)

4.逻辑运算符

1.种类:

与(&): 两个都是true结果才是true

或(||): 有一个是true结果就是true

非(!): 本来是true,变成false;本来是false,变成true;

package day21;

public class Demo01 {
    public static void main(String[] args) {
        System.out.println(true && false);
        System.out.println(true || false);
        System.out.println(!true);
        System.out.println(!true && false);
        System.out.println(3<4 && 6>4);
        
    }
}
运行结果:
false
true
false
false

 2.短路效果

package day21;

public class Demo02 {
    public static void main(String[] args) {
        System.out.println(false && true);
        System.out.println(true || false);
        int num1 =4;
        System.out.println(num1 > 100 && 5 > 4);  //   false 代码判断num1不大于100,就不会往下进行了
        System.out.println(num1 < 100 || 4 > 5);  //   true  代码判断num1 < 100,就不会往下进行了,判断结果为true
    }
}

3.注意事项

  1. 逻辑运算符左右两边必须是布尔值(boolean)
  2. 与,或需要两边各自有一个布尔值,但是取反只需有一个布尔值即可
  3. 对于1 < x < 3 ,拆分成x > 1 && x < 3

 5.三元运算符

  1. 数据类型 变量名称 = 条件判断? 表达式A: 表达式B
    package day21;
    
    public class Demo03 {
        public static void main(String[] args) {
            int a =10;
            int b =20;
            int max = a > b? a : b;
            System.out.println(max);
        }
    }
    运行结果: 20

第三章.方法入门

1.概述:

方法:就是把功能抽取出来,把代码单独放在一个大括号内,形成一个单独的功能,需要的时候就可以去调用,增加了代码的复用性,减少了代码的冗余

  1. 全局变量:通常把类的属性成为类的全局变量(成员变量),全局变脸声明在类体中
  2. 局部变量:方法中的属性称之为局部变量,局部变量声明在方法体中

2.方法的定义:

public static 方法名称(){

方法体;

}

package day21;

public class Demo04 {
    public static void main(String[] args) {

    }
    public static void farmer(){
        System.out.println("播种");
        System.out.println("施肥");
        System.out.println("浇水");
        System.out.println("收割");
        System.out.println("卖给小商贩");
    }

    public static void seller(){
        System.out.println("抬到农贸市场");
        System.out.println("提高价格");
        System.out.println("吆喝");
        System.out.println("卖给厨子");
    }
    public static void cook(){
        System.out.println("洗菜");
        System.out.println("切菜");
        System.out.println("炒菜");
        System.out.println("装盘");
    }
    public static void me(){
        System.out.println("吃");
    }
}

注意事项:

方法定义的顺序无所谓

定义方法的时候,不能产生嵌套包含关系

方法定义好了之后,不会执行的,如果想要执行,一定要进行方法的调用

3.方法的调用:

方法调用的格式:

方法名称();

4.练习

package day21;

public class Demo04 {
    public static void main(String[] args) {
        farmer();
        cook();
        seller();
        me();

    }
    public static void farmer(){
        System.out.println("播种");
        System.out.println("施肥");
        System.out.println("浇水");
        System.out.println("收割");
        System.out.println("卖给小商贩");
    }

    public static void seller(){
        System.out.println("抬到农贸市场");
        System.out.println("提高价格");
        System.out.println("吆喝");
        System.out.println("卖给厨子");
    }
    public static void cook(){
        System.out.println("洗菜");
        System.out.println("切菜");
        System.out.println("炒菜");
        System.out.println("装盘");
    }
    public static void me(){
        System.out.println("吃");
    }
}

运行结果:
播种
施肥
浇水
收割
卖给小商贩
洗菜
切菜
炒菜
装盘
抬到农贸市场
提高价格
吆喝
卖给厨子
吃

补:

第四章.JShell脚本工具

1.JShell脚本工具:

1.当我们编写的代码非常少,不想创建类,main方法时,可以使用JShell脚本工具

使用方法:

打开cmd命令提示符窗口,输入jshell命令,输入代码后,按回车执行,按/exit退出

jdk9或以上版本可以使用,jshell不适用于开发

2.编译器的优化

package day21;

public class Demo05 {
    public static void main(String[] args) {
        byte num1 = 30;
        System.out.println(num1);
        //右面的30是一个int类型的数,int --> byte ,不是自动类型转换
        //当右侧数值没有超过左侧数据类型的时候,编译器会自动补上强制类型转换的格式

    }
}

package day21;

public class Demo06 {
    public static void main(String[] args) {
        short a = 5;
        short b = 8;
        //short result =a + b;  //错误:左侧应该用int类型
        short result = 5 + 8;
        System.out.println(result);
        //当右侧两个为常量时,没有别的量时,就是正确的 "编译器的常量优化",当有变量参与时,此优化不再启用
        

    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值