黑马程序员_Java基础(数据类型,数据类型转换,scanner语句总结)

------- android培训java培训、期待与您交流! ----------

                                                         人生没有选择题,只有证明题,一直走在奋斗的路上!

数据类型

(1)Java是一种强类型语言,针对每种数据都提供了对应的数据类型。
(2)分类:
A:基本数据类型:4类8种
B:引用数据类型:类,接口,数组。
(3)基本数据类型
A:整数     占用字节数
byte 1
short         2
long 8
B:浮点数
float 4
double         8
C:字符
char 2
D:布尔
boolean 1
注意:
整数默认是int类型,浮点数默认是double。
长整数要加L或者l。
单精度的浮点数要加F或者f。
数据类型转换
(1)boolean类型不参与转换
(2)默认转换
A:从小到大
B:byte,short,char -- int -- long -- float -- double
C:byte,short,char之间不相互转换,直接转成int类型参与运算。
(3)强制转换
A:从大到小
B:可能会有精度的损失,一般不建议这样使用。
C:格式:
目标数据类型 变量名 = (目标数据类型) (被转换的数据);
(4)思考题和面试题:
A:下面两种方式有区别吗?
float f1 = 12.345f;
float f2 = (float)12.345;
第一个是表示f1本身就是一个float类型的数据
第二个理解是将double类数据转换成float类型,再将值赋值给f2
B:下面的程序有问题吗,如果有,在哪里呢?
byte b1 = 3;
byte b2 = 4;
byte b3 = b1 + b2;
byte b4 = 3 + 4;
第二句会出现问题,因为变量在进行相加的时候,先看数据类型,byte类进行计算时,要转换成int类型进行计算
常量相加时,先计算结果,看数据是否在赋值的变量范围内,如果不在才会报错。
C:下面的操作结果是什么呢?
byte b = (byte)130;
分析:
A:获取130这个数据的二进制。
00000000 00000000 00000000 10000010
这是130的原码,也是反码,还是补码。
B:做截取操作,截成byte类型的了。
10000010
这个结果是补码。
C:已知补码求原码。
符号位 数值位
补码: 1 0000010

反码: 1 0000001

原码: 1 1111110
D:字符参与运算
是查找ASCII里面的值
'a' 97
'A' 65
'0' 48

System.out.println('a');
直接输出这个字符在ASCII里面的对应的值
System.out.println('a' + 1);
输出ASCII值与1相加的结果
E:字符串参与运算
这里其实是字符串的连接
System.out.println("hello"+'a'+1);
输出“helloa1”
System.out.println('a'+1+"hello");
输出98hello
System.out.println("5+5="+5+5);
输出“5+5=55”
总结:
字符串和其他类型做+运算时,结果是字符串类型,这里的+不是加法运算符,而是赋值运算符

(5)数据类型中可能遇到的问题
1: 在定义Long或者Float类型变量的时候,要加L或者f。
整数默认是int类型,浮点数默认是double。

byte,short在定义的时候,他们接收的其实是一个int类型的值。
这个是自己做了一个数据检测的,如果不再它们的范围内,就报错。

2:byte值的问题
byte b1 = 127;
byte b2 = (byte)128; //-128
byte b3 = (byte)129; //-127
byte b4 = (byte)130; //-126

byte的范围:-128 ~ 127

128:10000000
-128:10000000 (这里的1即是符号位,也是数值位)

3:数据类型转换之默认转换
byte,short,char -- int -- long -- float -- double

long: 8个字节
float:4个字节

A:它们底层的存储结构不同。
B:float表示的数据范围比long的范围要大
long:2^63-1
float:3.4*10^38 > 2*10^38 > 2*8^38 = 2*2^3^38 = 2*2^114 > 2^63-1

4:Java语言中的字符char可以存储一个中文汉字吗?为什么呢?
可以。因为java语言中的字符占用两个字节。

Java语言采用的是Unicode编码。
运算符
(1)算术运算符
A:包括:+, -, * ,/ , %, + +, --
B:+的用法:a:加法 b:正号 c:字符串连接符
C:/和%的区别
数据做除法操作的时候,/取得是商,%取得是余数
D:++和--的用法
a:他们的作用是自增或者自减
b:使用
**单独使用
放在操作数据的前面和后面效果一样。
a++或者++a效果一样。
**参与操作使用
放在操作数的前面:先自增或者自减,再参与操作
放在操作数的后面:先参与操作,再自增或者自减
(2)赋值运算符
A:赋值运算符包括:=,+=,-=,*=,/=,%=等
B:=叫做赋值运算符,也是最基本的赋值运算符
例如:int x = 10; 把10赋值给int类型的变量x。
C:扩展的赋值运算符的特点
隐含了自动强制转换。
面试题:
short s = 1;
s = s + 1;
short s = 1;
s += 1;
分析:1默认为int类型,在与s进行运算时,s要自动类型提升转换为int 类型。而s + = 1,可以看成short s =(short)( s + 1);所以不会报错。
(3)比较运算符
A比较运算符包括::==,!=,>,>=,<,<=
B:无论运算符最终结果是boolean类型。
C:==与=是不同的,需要格外注意。
(4)逻辑运算符
A:逻辑运算符包括:&,|,^,!,&&,||
B:逻辑运算符用于连接boolean类型的式子
C:结论
&:有false则false
|:有true则true
^:相同则false,不同则true。
!:非true则false,非false则true
&&与&和| 和||之间的异同点
&&:结果和&是一样的,只不过有短路效果。左边是false,右边不执行。
||:结果和|是一样的,只不过有短路效果。左边是true,右边不执行。
(5)位运算符
A:^的特殊用法
一个数据针对另一个数据位异或两次,该数不变
(6)三元运算符
A:格式
比较表达式?表达式1:表达式2;
B:执行流程:
首先计算比较表达式的值,看是true还是false。
如果是true,表达式1就是结果。
如果是false,表达式2就是结果。
键盘录入
格式:
A:导包
import java.util.Scanner;
位置:在class的上边
B:创建对象
Scanner sc = new Scanner(System.in);
C:获取数据
int x = sc.nextInt();
D:获取字符串
String str =sc.nextLine();


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值