找回密码
 会员注册
查看: 37|回复: 0

JavaSE数据类型和运算符

[复制链接]

2万

主题

0

回帖

6万

积分

超级版主

积分
64454
发表于 2024-9-3 17:30:29 | 显示全部楼层 |阅读模式
前言从这一篇我们开始Java的学习~欢迎关注个人主页:逸狼创造不易,可以点点赞吗~如有错误,欢迎指出~目录前言Java第一个程序字面常量字面常量的分类结合代码理解类型转换类型提升 byte与byte的运算正确写法字符串类型Stringint与String相互转换int转StringString转int算术运算符加减乘除模(+-*/%)+加/除%取余小数也可以%增量运算符+= -= *= %=自增/自减运算符++--关系运算符==!==逻辑运算符& ||  !逻辑与&逻辑或||逻辑非!短路位运算符按位与&按位与|按位取反~按位异或条件运算符移位运算Java第一个程序publicclassHelloworld{//快捷键main或者首字母psvm创建main方法publicstaticvoidmain(String[]args){System.out.println("Helloworld!");//快捷键sout}}java按类,方法,语句逐级来写publicclassHelloworld是类,publicstaticvoidmain(String[]args)是main方法(相当于C语言的main函数,是程序的入口,快捷键是main回车),System.out.println("helloworld!");是语句,(相当于C语言的printf函数,意为格式化打印Helloworld!,快捷键是sout)其中一个java文件中只能有一个public修饰的类字面常量常量即程序运行期间,固定不变的量。字面常量的分类1.字符串常量:由""括起来的,比如“12345”、“hello”、“你好”。2.整形常量:程序中直接写的数字(注意没有小数点),比如:100、10003.浮点数常量:程序中直接写的小数,比如:3.14、0.494.字符常量:由单引号括起来的单个字符,比如:‘A’、‘1’5.布尔常量:只有两种true和false6.空常量:null在Java中数据类型主要分为两类:基本数据类型和引用数据类型。基本数据类型有四类八种:1.四类:整型、浮点型、字符型以及布尔型结合代码理解publicclassHelloworld{publicstaticvoidmain(String[]args){//整形//int类型不管在多少位的机器上都是4字节//Integer是包装类,简单理解为int类型的plus版本System.out.println(Integer.MAX_VALUE);//输出int最大值2147483647System.out.println(Integer.MIN_VALUE);//输出int最小值-2147483648//局部变量没有初始化会报错//java会检查字面值超过会报错intc=2147483647;//int类型范围2^31~2^31-1intd=c+1;System.out.println(d);//长整形longx=10L;//long类型的范围2^63~2^63-1,后面加上L(不建议l),表示当前10是long类型//8字节64bit//Long是包装类,简单理解为long类型的plus版本System.out.println(Long.MAX_VALUE);//输出long最大值9223372036854775807System.out.println(Long.MIN_VALUE);//输出long最小值-9223372036854775808//短整型short/**2个字节-2^15~2^15-1**/shorts=10;System.out.println(s);System.out.println(Short.MAX_VALUE);//32767System.out.println(Short.MIN_VALUE);//-32768//byte1个字节-128~127byteb=100;System.out.println(b);System.out.println(Byte.MAX_VALUE);//127System.out.println(Byte.MIN_VALUE);//128//字符型char2字节//unicode字符集包含了阿拉伯文,汉字,ASCII表等charch='逸';charch1=97;//可以给值正整数,输出ASCII对应字符aSystem.out.println(ch1);//包装类型是Character//单精度浮点型float,4字节floatf=12.5f;//要加上f,否则会被认为是double类型的数据,报错System.out.println(f);//双精度浮点型double8个字节(在任何系统都是)//在内存中存储与整形不同,也遵循IEEE754标准,所以浮点数是近似值,不是精确值doublenum=1.1;System.out.println(num*num);//输出1.2100000000000002//包装类型是Double//布尔类型没有明确的大小,不能和其他类型的值相互转换,不存在1真0假booleanflg=true;System.out.println(flg);//包装类型是Boolean}}其中包装类型是基本数据对应的类类型类型转换代码不需要经过任何处理,在代码编译时,编译器会自动进行处理。特点:数据范围小的转为数据范围大的时会自动进行。inta=10;//4longb=100L;//8//b=a可以通过编译编译器自动类型提升//a=b会报错,需要强制类型转换,a=(int)b,缺点:可能会有数据丢失//不相干类型的数据不能相互转换类型提升 byte与byte的运算bytea=10;byteb=20;bytec=a+b;System.out.println(c);byte和byte都是相同类型,但是出现编译报错.原因是,虽然a和b都是byte,但是计算a+b会先将a和b都提升成int,计算结果也是int,赋给c,就会出现上述错误.由于计算机的CPU通常是按照4个字节为单位从内存中读写数据.为了硬件上实现方便,诸如byte和short这种低于4个字节的类型,会先提升成int,再参与计算.正确写法bytea=10;byteb=20;bytec=(byte)(a+b);System.out.println(c);字符串类型StringString不是包装类型,是引用数据类型。publicstaticvoidmain(String[]args){Stringstr1="Hello";Stringstr2="world!";//+意为拼接Stringstr3=str1+str2;System.out.println(str3);}int与String相互转换int转Stringintnum=10;//方法1Stringstr1=num+""; //方法2Stringstr2=String.valueOf(num);String转int其中被转换的数字必须是合法的数字字符串,比如“100a200"就不行Stringstr="100";intnum=Integer.parseInt(str);算术运算符加减乘除模(+-*/%)+加两侧操作数类型不一致时,向类型大的提升System.out.println(1+0.2); //+的左侧是int,右侧是double,在加之前int被提升为double              //故:输出1.2/除做除法和取模时,右操作数不能为0publicstaticvoidmain(String[]args){System.out.println(5/2);//2System.out.println(5.0/2);//2.5System.out.println(5/0);//报错System.out.println(5.0/0);//Infinity}%取余publicstaticvoidmain(String[]args){System.out.println(9%2);//1System.out.println(9%-2);//1System.out.println(-9%2);//-1System.out.println(-9%-2);//-1}小数也可以%System.out.println(11.5%2);//1.5增量运算符+= -= *= %=例如+=,其他以此类推inta=1;a+=2;         //相当于a=a+2System.out.println(a); //输出3自增/自减运算符++--++是给变量的值+1,--是给变量的值-1。分前置和后置,以++举例,比如b=++a(前置),表示a先+1,再赋值给b而b=a++(后置),表示先赋值给b,a再+1关系运算符==!==其计算结果是true或者false。inta=10;intb=20;System.out.println(a==b);   //falseSystem.out.println(a!=b);   //trueSystem.out.println(ab);    //falseSystem.out.println(a=b);   //false逻辑运算符& ||  !运算结果都是boolean类型,表达式必须是boolean类型的结果。逻辑与&表达式1&表达式2有一个为假,表达式为假逻辑或||表达式1|| 表达式2有一个为真,表达式为真逻辑非!!表达式假变真,真变假短路第一个表达式成立,就不会执行第二个表达式System.out.println(10>20&10/0==0);      //打印falseSystem.out.println(10b?a:b;移位运算位运算的 速度 比普通的加减乘除更快1.左移<< 最左侧位去掉, 最右侧补 0,相当于乘法 2. 右移 >>最右侧位去掉,最左侧补符号位,相当于除法3.无符号右移>>>最右侧位去掉,最左侧补0
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2024-12-28 05:24 , Processed in 0.436472 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表