java为什么我数组里的int不能自动转换Double

不同的基本类型之间可以相互转換:

自动类型转换(隐式类型转换):从小类型到大类型可以自动完成.类型的大小关系如下图所示:


强制转换:从大类型到小类型需要强制转换符:

(需要轉换成的类型)变量

但这样转换可能会造成精度损失或者溢出

强制转换时的精度丧失和溢出

基本类型转换示例注意强制转换时可能会造成嘚精度丧失和溢出

多种基本类型参与的表达式运算中,运算结果会自动向较大类型进行转换:

//由于有long型的直接量参与整个表达式结果为long

//由於有double型的直接量599.0参与,整个表达式的结果为double

//结果为0.0右边都是int型数据,运算结果也为int类型,结果为0再赋值给double型,将0转换成0.0

//结果为0.8右边表達式有double型直接量参与,运算结果为double型

byte、char、short三种类型实际存储的数据都是整数在实际使用中遵循如下规则:

-int直接量可以之间赋值给byte,char和short只偠不超过其表达范围

-byte、char、short三种类型参与运算时,先一律转换成int类型再进行运算

java算数运算符除通常的(+)减(-),乘(*)除(/)之外,還包括取模

运算(%)和自增(++)及自减(--)运算.

取模运算(%)意为取余数可适用于整数,char类型以及浮点数.

//输出255除以8所得余数

java的自增运算苻和自减运算符继承自C++,可以使变量的值加1或减1但其写在

变量前和变量后有不同的效果:

-如果写在变量前使用表示在使用整个变量之前加1或減1

-如果写在变量之后表示这个变量使用完之后再加1或减1

关系运算符用于判断数据之间的大小关系,包括大于(>),小于(<)

大于等于(>=),小于等于(<=)等于(==),不等于(!=)六个运算符

关系运算的结果为boolean类型关系成立为true,否则为false

逻辑运算符建立在关系运算的基础上逻辑运算符包括:

参与逻辑运算的变量或表达式都是boolean类型,运算结果也为

boolean类型逻辑运算规则如下表所示:

||使用或运算符,两个boolean变量参与||运算时当兩个变量

有一个true时,结果即为true只有两个变量均为false时结果为false

“!"运算相对简单,只会有一个boolean变量参与运算

运算的值与该变量相反变量为true時结果为false,变量值为false结果为true

关于"短路逻辑"的问题

java逻辑运算遵循"短路逻辑"的原则:

-对于"&&",当第一个操作数为false时将不会判断第二个操作数,因此此时无论

第二个操作数为何最后的运算结果一定时false;

-对于"||",当第一个操作数为true时将不会判断第二个操作数,因为此时无论

第二个操作数為何最后的运算结果一定时true.

变量使用过程中的常识问题:

1>使用未经声明的变量

2>使用不符合java标识命名规则的变量

3>使用未经初始化的变量.

4>变量嘚赋值与变量类型不匹配

1>整数直接量超出了整数的范围.

2>关于整数的除法:两个整数相除,会舍弃小数的部分结果也是整数

3>整数运算的溢出:兩个整数进行运算时,其结果可能会超出整数范围而溢出

4>表示long直接量需要以L或者l结尾

浮点类型在使用中,常见问题:

2>浮点数存在舍入误差問题(由于浮点数内部用二进制方式表示

十进制会存在舍入误差.二进制无法精确表示1/10,就好像十进制系统中

无法精确表示1/3一样.对与要求精確运算的场合会导致代码缺陷如果需要精确运算

4.对char类型变量的各种赋值方式:

1>字符类型存储中文(字符类型事实上时一个16为无符号整数,這个值时对应字符的编码

java字符类型采用Unicode字符编码,Unicode时世界通用的定长字符集所有字符都是16

位字符直接量。对应中文可以采用诸如:'中'嘚形式,也可以采用其对应的16进制的表示形式

两个字节表示一个字符(中英文都一样)

2>char类型的值可以作为整数类型之间使用

char类型的值可鉯之间作为整数类型的值来使用,字符类型事实上是一个16位无符号整数

即全部是正数表示范围时0~65535

上述输出范围为0~65535,如果把0~65535范围内的一个int整数赋给char类型整数

系统会自动把这个int类型整数当成char类型来处理如下:

上述代码输出结果为a.这说明系统自动把整数类型97当成char类型来处理,处悝结果为a

5.类型转换常见问题:

数据类型转换再使用过程中,常见问题如下:

1>强制转换时的精度丧失和溢出.

2>数字运算时的自动转换.

数组对于每一门编程语言来说都昰重要的数据结构之一当然不同语言对数组的实现及处理也不尽相同。

Java语言中提供的数组是用来存储固定大小的同类型元素

//数组作为返回值得函数

java.util.Arrays类能方便地操作数组,它提供的所有方法都是静态的具有以下功能:

给数组赋值:通过fill方法。

对数组排序:通过sort方法,按升序

比较数组:通过equals方法比较数组中元素值是否相等。

查找数组元素:通过binarySearch方法能对排序好的数组进行二分查找法操作

用二分查找算法茬给定数组中搜索给定值的对象(Byte,Int,double等)。数组在调用前必须排序好的如果查找值包含在数组中,则返回搜索键的索引;否则返回 (-(插入点) - 1)

如果两个指定的 long 型数组彼此相等,则返回 true如果两个数组包含相同数量的元素,并且两个数组中的所有相应元素对都是相等的则认为这两個数组是相等的。换句话说如果两个数组以相同顺序包含相同的元素,则两个数组是相等的同样的方法适用于所有的其他基本数据类型(Byte,shortInt等)。

将指定的 int 值分配给指定 int 型数组指定范围中的每个元素同样的方法适用于所有的其他基本数据类型(Byte,shortInt等)。

对指定对象数组根據其元素的自然顺序进行升序排列同样的方法适用于所有的其他基本数据类型(Byte,shortInt等)。

我要回帖

 

随机推荐