【JavaSE】数据类型和运算符

结合代码理解

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

        //整形
        //int类型不管在多少位的机器上都是4字节
        //Integer是包装类,简单理解为int类型的plus版本
        System.out.println(Integer.MAX_VALUE);//输出int最大值2147483647
        System.out.println(Integer.MIN_VALUE);//输出int最小值-2147483648

        //局部变量 没有初始化会报错
        //java会检查字面值 超过会报错
        int c=2147483647;//int类型范围2^31~2^31-1
        int d=c+1;
        System.out.println(d);

        //长整形
        long x=10L;//long类型的范围2^63~2^63-1,后面加上L(不建议l),表示当前10是long类型
        //8字节 64bit
        //Long是包装类,简单理解为long类型的plus版本
        System.out.println(Long.MAX_VALUE);//输出long最大值9223372036854775807
        System.out.println(Long.MIN_VALUE);//输出long最小值-9223372036854775808

        //短整型short
        /*
        * 2个字节  -2^15~2^15-1
        *  */
        short s=10;
        System.out.println(s);
        System.out.println(Short.MAX_VALUE);//32767
        System.out.println(Short.MIN_VALUE);//-32768

        //byte  1个字节   -128~127
        byte b=100;
        System.out.println(b);
        System.out.println(Byte.MAX_VALUE);//127
        System.out.println(Byte.MIN_VALUE);//128

        //字符型char  2字节
        //unicode字符集  包含了阿拉伯文,汉字,ASCII表等
        char ch='逸';
        char ch1=97;//可以给值正整数,输出ASCII对应字符a
        System.out.println(ch1);
        //包装类型是Character

        //单精度浮点型float,4字节
        float f=12.5f;//要加上f,否则会被认为是double类型的数据,报错
        System.out.println(f);

        //双精度浮点型double  8个字节(在任何系统都是)
        //在内存中存储与整形不同,也遵循IEEE754标准,所以浮点数是近似值,不是精确值
        double num=1.1;
        System.out.println(num*num);//输出1.2100000000000002
        //包装类型是Double

        //布尔类型 没有明确的大小,不能和其他类型的值相互转换,不存在1真0假
        boolean flg=true;
        System.out.println(flg);
        //包装类型是Boolean

    }
}

其中包装类型 是基本数据对应的类 类型

类型转换

代码不需要经过任何处理,在代码编译时,编译器会自动进行处理。

特点:数据范围小的转为数 据范围大的时会自动进行。

int a=10;//4
long b=100L;//8
//b=a 可以通过编译 编译器自动类型提升
//a=b 会报错,需要强制类型转换,a=(int)b,缺点:可能会有数据丢失
//不相干类型的数据不能相互转换

类型提升

byte与byte的运算

byte a = 10;
byte b = 20;
byte c = a + b;
System.out.println(c);

byte 和 byte 都是相同类型, 但是出现编译报错. 原因是, 虽然 a 和 b 都是 byte, 但是计算 a + b 会先将 a 和 b 都提升成 int, 计算结果也是 int, 赋给 c, 就会出现上述错误. 由于计算机的 CPU 通常是按照 4 个字节为单位从内存中读写数据. 为了硬件上实现方便, 诸如 byte 和 short 这种低于 4 个字节的类型, 会先提升成 int, 再参与计算.

正确写法
byte a = 10;
byte b = 20;
byte c = (byte)(a + b);
System.out.println(c);

字符串类型String

String不是包装类型,是引用数据类型

    public static void main(String[] args) {
        String str1="Hello ";
        String str2="world!";
        //+意为拼接
        String str3=str1+str2;
        System.out.println(str3);
    }

int与String相互转换

int转String
int num = 10;
// 方法1
String str1 = num + "";  
// 方法2
String str2 = String.valueOf(num);

String转int

其中被转换的数字必须是合法的数字字符串,比如“100a200"就不行

String str = "100";
int num = Integer.parseInt(str);

算术运算符

加减乘除模(+ - * / %)

+加

两侧操作数类型不一致时,向类型大的提升

System.out.println(1+0.2);   // +的左侧是int,右侧是double,在加之前int被提升为double
                             // 故:输出1.2

/ 除

做除法和取模时,右操作数不能为0

    public static void main(String[] args) {
        System.out.println(5/2);//2
        System.out.println(5.0/2);//2.5
        System.out.println(5/0);//报错
        System.out.println(5.0/0);//Infinity
    }

%取余

    public static void main(String[] args) {
        System.out.println(9%2);//1
        System.out.println(9%-2);//1
        System.out.println(-9%2);//-1
        System.out.println(-9%-2);//-1
    }
小数也可以%
System.out.println(11.5%2);//1.5

增量运算符 +=  -=  *=  %=

例如+=,其他以此类推

int a = 1;
a += 2;                  // 相当于 a = a + 2
System.out.println(a);   // 输出3

自增/自减运算符 ++ –

++是给变量的值+1,–是给变量的值-1。

分前置和后置,

以++举例,比如b=++a (前置),表示a先+1,再赋值给b

而b=a++(后置),表示先赋值给b,a再+1

关系运算符 == != < > =

其计算结果是 true 或者 false

int a = 10;
int b = 20;
System.out.println(a == b);       // false
System.out.println(a != b);       // true
System.out.println(a < b);        // true
System.out.println(a > b);        // false
System.out.println(a <= b);       // true
System.out.println(a >= b);       // false

逻辑运算符&&  ||   !

运算结果都是 **boolean类型,**表达式必须是boolean类型的结果。

逻辑与&&

表达式1 && 表达式2

有一个为假,表达式为假

逻辑或||

表达式1 || 表达式2

有一个为真,表达式为真

逻辑非!

!表达式

假变真,真变假

短路

第一个表达式成立,就不会执行第二个表达式

System.out.println(10 > 20 && 10 / 0 == 0);             // 打印 false
System.out.println(10 < 20 || 10 / 0 == 0);             // 打印 true

位运算符

按位与&

有0则为0,可理解为乘法

按位与|

有1则为1,可理解为加法

按位取反 ~

1变0,0变1

按位异或

同为0,异为1

条件运算符

条件运算符只有一个: 表达式1 ? 表达式2 : 表达式3

表达式1 的值为真 时, 整个表达式的值为 表达式2 的值

为假,则表达式3

// 求两个整数的最大值
int a = 10;
int b = 20;
int max = a > b ? a : b;

移位运算

位运算的 速度比普通的加减乘除更快

  1. 左移<< 最左侧位去掉, 最右侧补 0,相当于乘法

  2. 右移 >>最右侧位去掉, 最左侧补 符号位,相当于除法

3.无符号右移>>>最右侧位去掉, 最左侧补0

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)

[外链图片转存中…(img-l3YAu2y6-1713714388782)]

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)

  • 14
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值