自学java第二天

String类型的基本使用

String是引用数据类型,变量定义的格式为:String 变量名 = "";

""中的内容可以是任意的,叫做字符串,与char不同,char类型叫做字符,里面只能有一个内容。

String的运算规则,在和基本数据类型进行运算时,会进行拼接的操作。

例如:

public class index {
    public static void main(String[] args) {
        String name = "小飞";
        int age = 18;
        //输出结果为小飞18
        System.out.println(name + age);
    }
}

 注意:

public class index {
    public static void main(String[] args) {
        String name = "小飞";
        int a = 10;
        char b = 'a';
        //输出结果为107小飞
        System.out.println(a + b + name);
        //输出为小飞10a
        System.out.println(name + a + b);
    }
}

有String类型参与运算时才会进行拼接。

进制的理解

二进制转换十进制

二进制:以0b或者0B开头0,1组成       例如:0b0111

八进制:以0开头 0-7组成                     例如:076

十六进制:以0x或者0X开头0-10,a-f组成 (不区分大小写) 例如:0x1A

进制之间的转换这里只列举一个,二进制转换为十进制,我们以byte为例,占用1个字节,1个字节占用8个bit位,

从左往右第一位叫做符号位,0正1负,其余的才是数据。

例如:

00000011

这个二进制表示的数据转换为十进制为3

因为:1*2^0 + 1*2^1 = 1 + 2= 3,因为符号为是0所以是正整即为3.

10000011

因为符号为为1,即结果为-3.

原码反码补码

正数的原码反码补码,三码相同。

负数的反码是在原码的基础上,符号位为不变,其余位取反,0变1,1变0.

负数的补码,是在反码的基础上末位加1

为什么要了解原码反码和补码呢,是因为,计算机在计算时,是使用补码在进行计算的。原码和反码是过程,便于我们理解

例如:-3 + 2 ,在计算机内部是怎么计算的。

-3的原码为

1000001

1

反码为

1111110

0

补码为

1111110

1

2的原码反码补码都一样

0000001

0

-3的补码加上2的补码为

1111111

1

计算后的补码转换为反码为

1111111

0

转换为原码为

1000000

1

计算:1 * 2^0 + 0 * 2^1 = 1 + 0 = 1,因为符号为为1,即为负数,结果为-1

通过原码补码反码,就可以解释为什么在进行强制类型转换时,如果超出被强转类型的范围会导致的精度缺失的问题

例如:

public class index {
    public static void main(String[] args) {
        int a = 129;
        byte b = (byte)a;
        //结果为-127
        System.out.println(b);
    }
}

原因:129是int类型,占用四个字节,32个bit位。

129在4个字节中的表现形式

00000000000000000000000010000001

转换为byte类型时发生截断操作,为

1000000

1

我们知道数据在计算机的储存是补码形式存在的,符号为1,为负数,所以上述是-129的补码形式,

反码为

1000000

0

原码为:

1111111

1

计算为-127.

注意:-128比较特殊,补码为10000000,没有原码,反码不能简单的认为是补码-1,它的反码为11111111,在计算时,直接用补码计算。

运算符

算数运算符

+  , -,   *,  /,  %,前++,后++,前--,后--

加减乘除四则运算没什么说的,需要注意的是数据类型的使用。

%(取余)的操作就是求的是余数。

前++是先自增后计算,后++先计算后自增

前--是先自减后计算,后--先计算后自减

例如:

public class index {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        //++在后,即先计算后自增,a + b = 10 + 20,a = 11
        int c = a++ + b;
        //++在前,即先自增后计算,a = 12,a + b = 12 + 20 = 32
        int d = ++a + b;
        System.out.println(c);
        System.out.println(d);
        System.out.println(a);
    }
}

赋值运算符

=:在数学叫做等于号,就是把等号右边的值赋值给左边。

配合+  , -,   *,  /,  %就有了+=,-=,/=,%=

例如:

public class index {
    public static void main(String[] args) {
        byte a = 10;
        //类型自动提升为int
        int b = a + 10;
        //通过+=计算数据类型不会提升
        byte c = a += 10;
        System.out.println(c);
    }
}

比较运算符

> ,<,>=,<=,==,!=(不等于)

用于比较基本数据类型除了boolean,一般用于比较两个值之间的关系,返回一个布尔值

例如:

public class index {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        int c = 10;
        //结果为true
        System.out.println(a < b);
        //结果为false
        System.out.println(a > b);
        //结果为true
        System.out.println(a <= b);
        //结果为false
        System.out.println(a >= b);
        //结果为false
        System.out.println(a == b);
        //结果为true
        System.out.println(a != b);
    }
}

逻辑运算符

&(逻辑与),&&(短路与),|(逻辑或),||(短路或),!(非),^(异或)

逻辑运算符操作的都是boolea类型的变量或常量,运算的结果也是boolean类型。

&,&&:符号两边为true,结果才为true,否则为false

|,||:符号两边一边为true,结果就为true,两边为false结果为false

!(非):当布尔类型为true是,结果为false,当布尔类型为false是,结果为true

^(异或):两边布尔值不同时,为true,相同时为false

&与&&的区别为:短路,如果&左边条件表达式为false,依然会执行右边的表达式,则&&就不会执行右边,增加了运行的效率

|,||同上。

条件运算符:

格式为:条件表达式  ? 表达式1  :表达式2

条件表达式的结果为,true或者false

如果为true就执行表达式1,false就执行表达式2

例如:

public class index {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        int c = a > b ? a : b;
        //结果为20
        System.out.println(c);
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值