您的位置:首页 > 职场人生

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

2015-05-17 23:39 465 查看
-------
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();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐