当前位置:首页 > 青鸟知识 > java

java基本数据类型和运算符

来源:长沙it培训 发布日期:2017-03-28

  一,数据类型分类(2种)

  1. 基本数据类型(3种)

  数值型:

  整数类型(4种):

  byte(1字节):范围(-128~127);

  short(2字节):范围(-32768~32767);

  int(4字节);

  long(8字节):若数据定义为long类型超过int范围后面 需加“L”(推荐)或“l”(默认为int,超过int范围编译将会报错,未超过则不会);

  浮点类型(2种):

  float(4字节):第1位为符号位,接下来8位表示指数,再接下来23位表示尾数;若指定浮点类型为float需加“F”或“f”(默认为double,否则编译提示可能损失精度);

  double(8字节):第1位为符号位,接下来11位表示指数,再接下来52位表示尾数;

  浮点数的形式:

  a.十进制数形式:必须包含一个小数点(1.68、168.0和 .168),否则当成int类型;

  b.科学计数法形式:只有浮点类型数值才可以使用,如1.68e2(168.0)、1.68E2和168e2(16800.0);

  特殊浮点数:

  a.正无穷大:正数除于0.0,用Double或Float的POSITIVE_INFINITY表示,所有的正无穷大都相等;

  b.负无穷大:负数除于0.0,用Double或Float的NEGATIVE_INFINITY表示,所有的负无穷大都相等;

  c.非数:0.0/0.0,用Double或Float的NaN表示,所有的非数均不相等;

  字符型:char(2字节)

  布尔型:boolean(1字节)

  注意: switch语句中只能接受byte、short、int和char 类型变量(JDK1.6以前的版本),JDK1.7时,又增加了String。

  2. 引用数据类型

  类(class)

  接口(interface)

  数组([ ])

  二,基本数据类型转换(2种)

  1. 自动类型转换

  表数范围小的向表数范围大的自动转换

  当s为short类型时。s += 4;与s = s + 4;的区别

  class OperatorDemo {

  public static void main(String[] args){

  short s = 3;

  s += 4;

  System.out.println("s = " + s);

  /*

  s = s + 4;

  System.out.println("s = " + s);

  //s(short类型)与4(默认int类型),会自动提升为int类型,相加的和也为int类型,赋值给short类型的变量编译会提示损失精度

  */

      }

  }

  2. 强制类型转换

  语法格式:(targetType)Value

  以下为负数的二进制相互转换示例:

  class BinaryDemo {

  public static void main(String[] args) {

  System.out.println(Integer.toBinaryString(128)); /*用于打印整数128的二进制 00000000 00000000 00000000 10000000 (4个字节,前面0不显示);

  取反:11111111 11111111 11111111 01111111 (4个字节)

  + 1 */

  System.out.println(Integer.toBinaryString(-128)); //用于打印-128的二进制 11111111 11111111 11111111 10000000 (4个字节);

  byte a=1,b=2;

  a = (byte)(a + 126);//a=127,强制为byte 1个字节,二进制的最高位为0,范围内;

  b = (byte)(b + 126);//b=128,强制为byte 1个字节,二进制的最高位为1,超出范围,后面取反再加1,转换为负数-128;

  System.out.println("a="+a+",b="+b);

  System.out.println(Integer.toBinaryString(a));

  System.out.println(Integer.toBinaryString(b));

       }

  }

  运行结果:

运行结果.png

  三,运算符(6种)

  1. 算数运算符

  正号(+) 、负号(-)、加(+)、减(-)、乘(*)

  除(/):整数与整数相除时,结果永远是整数,小数部分被忽略。

  模(%):负数对正数取模结果为负数;正数对负数取模结果为正数。

  自增(++):该运算符出现在操作数左边,操作数先自增,再参与运算;出现在右边,先参与运算再自增。

  自减(–):该运算符出现在操作数左边,操作数先自减,再参与运算;出现在右边,先参与运算再自减。

  字符串相连(+)

  int a = 4,int b = 5;

  System.out.println("a+b="+a+b);//打印结果:a+b=45

  System.out.println("a+b="+(a+b));//打印结果:a+b=9

  2. 赋值运算符(13种)

  将值赋给变量(=);

  扩展后的赋值运算符:推荐使用,让程序更健壮。

  += , -= , *= , /= , %= , &= , |= , ^= , <<= , >>= , <<<= , >>>=

  3. 位运算符(7种)

  直接对二进制位进行运算

  按位与(&):可用于提取某一二进制数的其中几位。

  按位或(|)

  按位异或(^):一个数异或同一个数两次为本身(用于数据简单加密,还可用于两个整数的交换)。

  int m3=5,n3=7;

  System.out.println("互换前:m3="+m3+",n3="+n3);

  m3 = m3 ^ n3 ;

  n3 = m3 ^ n3 ;

  m3 = m3 ^ n3 ;

  System.out.println("互换后:m3="+m3+",n3="+n3);

  按位非(~):对二进制数值的每一位0变1,1变0。

  左移运算符(<<)、无符号左移运算符(<<<):左移几位其实就是该数据乘以2的几次方。

  右移运算符(>>)、无符号由移运算符(>>>):右移几位其实就是该数据除以2的几次幂。

  4. 比较运算符(7种)

  返回结果为boolean类型

  符号:>、>=、<、<=、==、!=和instanceof

  5. 逻辑运算符

  符号:&&(短路与)、||(短路或)、!(非)、&(与)、|(或)、^(异或)

  6. 三目运算符

  语法格式:(expression)?(if-true-statement):(if-false-statement)

  说明:为if else的简写,当其运算有一具体结果时,可以使用三目运算符简化。


拒绝套路 试听有礼

数据已加密保证您的信息安全