Java学习Day02

1.数据类型转换(必须拥有一致的数据类型)

①自动转换(小转大)

自动转换:将 取值范围小的类型 自动提升为 取值范围大的类型 。

Java学习Day02

PS:范围小的类型向范围大的类型提升, byte、short、char 运算时直接提升为 int,大致转换规则为byte、short、char——>int——>long——>float——>double

 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类型,因此编译失败。  

②强制转换(大转小)

将取值范围大的类型 强制转换成 取值范围小的类型 。 比较而言,自动转换是Java自动执行的,而强制转换需要我们自己手动执行。

转换格式:数据类型 变量名 = (数据类型)被转数据值;

public static void main(String[] args) {
        //short类型变量,内存中2个字节
        short s = 1;
        /*
        出现编译失败
        s和1做运算的时候,1是int类型,s会被提升为int类型
        s+1后的结果是int类型,将结果在赋值会short类型时发生错误
        short内存2个字节,int类型4个字节
        必须将int强制转成short才能完成赋值
        */
        s = s + 1;//编译失败
        s = (short)(s+1);//编译成功
    }

③原码、反码、补码

正数:三码相同。

负数:原码:任意数(正数)除以2取余。(倒取)

           反码:原码除最高符号位不变其余位置取反。

           补码:反码加1

Java学习Day02

十进制常数160的原码、反码、补码为1010 0000

                                                 反码:1001 1111( 补码-1)

                                                 原码:1110  0000(反码取反)

-(1*2^6+1*2^5)=-96 

 2.运算符

①算数运算符

②比较运算符

③逻辑运算符

   public static void main(String[] args) {
        System.out.println(true && true);//true
        System.out.println(true && false);//false
        System.out.println(false && true);//false,右边不计算
        System.out.println(false || false);//falase
        System.out.println(false || true);//true
        System.out.println(true || false);//true,右边不计算
        System.out.println(!false);//true
    }

位运算符:

& | ^ ~ << >>  >>>
有0则0 有1则1 相同则0,不同则1 按位取反 左移  右移 无符号右移


            
            
左移:空位补0,被移除的高位丢弃。
           注:当左移的运算数是byte 和short类型时,将自动把这些类型扩大为 int 型。
右移:被移位的二进制最高位是0,右移后,空缺位补0;最高位是1,高位补1空位1
无符号右移:被移位二进制最高位无论是0或者是1,空缺位都用0补。

Java学习Day02

0000 0101(5原反补)

1000 0011(-3原)

0000 0011(3原)

1111 1100(-3反) 

1111 1101(-3补)

例:5|-3  1111 1101(补)——>1111 1100(反)——>1000 0011(原)——>-3

       5^-3 1111 1000(补)——>1111 0111(反)——>1000 1000(原)——>-8

        ~-3 1111 1101(补)——>0000 0010(取反)——>三码合一——>2

④赋值运算符

⑤三目运算符

三元运算符格式: 数据类型 变量名 = 布尔类型表达式?结果1:结果2

Java学习Day02

 3.方法的定义与调用

①定义

定义格式:

修饰符 返回值类型 方法名 (参数列表){
	代码...
	return ;
}

 

定义格式解释:

  • 修饰符: 目前固定写法 public static 。

  • 返回值类型: 目前固定写法 void ,其他返回值类型在后面的课程讲解。(八大基本数据类型)

  • 方法名:为我们定义的方法起名,满足标识符的规范,用来调用方法

  • 参数列表: 目前无参数, 带有参数的方法在后面的课程讲解

  • return:方法结束。因为返回值类型是void,方法大括号内的return可以不写

②方法调用

public class Test7 {
    public static void main(String[] args) {
        printNum();
    }
    public static void printNum(){
        float f1=12345.01f;
        float f2 = 12345.00f;
        float var1 = f1 >= f2 ? 12456 : 12456.02f;
        float var2=var1+1024;
        System.out.println("var1的值为:" + var1 + "var2的值为:" + var2);

    }
}

注:方法在定义完毕后,方法不会自己运行,必须被调用才能执行,我们可以在主方法main中来调用我们自己定义好的方法。在主方法中,直接写要调用的方法名字就可以调用了。

上一篇:2021-09-05 Java语言基础Day02


下一篇:day02_输入数据丶数据类型转换丶运算符