JAVA--数据类型与运算符

这是一篇对JAVA数据类型与运算符的简单梳理框架以及注意事项

一、变量和类型

   1.整型变量

int num=10;
system.out.println(num);

  int占四个字节(-2^31~2^31)和操作系统没有直接关系.

   2.长整形变量

long num=10L;
system.out.println(num);

L最好大写以免与1相似,long占八个字节(-2^63~2^63)

  3.双精度浮点型变量

double num=1.0;
system.out.println(num);

在Java中int除以int的值依旧是整型int(如有小数则会直接舍弃小数部分只留整数部分)。

double占八个字节,但因为浮点数的内存布局与整数相差很大,不能直接用2^n的形式表示范围。

  4.单精度浮点型变量

float num=1.0f;
system.out.println(num);

float占四个字节,但精度范围较小,一般优先考虑double。

  5.字符类型变量

char ch='A';
system.out.println(ch);

java中用Unicode表示字符,一个字符占用两个字节,表示的字符种类很多包括中文。

  6.字节类型变量

byte value =0;
System.out.println(value);

字节类型表示的也是整数,只占一个字节表示的范围较小(-128~127)

  7.短整型变量

short value =0;
system.out.println(value);

short占用两个字节(-32768~32767)

  8.布尔类型变量

boolean value =0;
System.out.println(value);

boolean类型的变量只有true和false两种取值(真和假)。

Java的boolean类型和int类型不能相互转换。

Boolean有些占一个字节但没有明确规定。

  9.字符串类型变量

string name ="zhangsan";
System.out.println(name);

与上面不同,string是引用类型。

字符串中一些不太方便表示的字符需要转义。

//创建一个字符串 My name is "张三"
string name ="My name is\"张三\""
转义字符解释
\n换行
\t水平制表符
\'单引号
\"双引号
\\反斜杠

二、常量

    1.字面值常量

10/010/0x10/10L/1.0/1.5e2/1.0f/true/'a'/"abc"

    2.fianl关键字修饰的常量

final int a=10;

a=20;//编译出错,无法为最终变量a分配值

常量不能在运行过程中发生修改。

三、相关规则

   1.变量的作用域

变量生效的范围是变量定义所在的代码块(即变量定义所在的大括号)

{
 {
  int x=10;
  System.out.println(x);//编译通过
 }
 System.out.println(x);//编译失败,找不到变量x
}

   2.变量命名的规则

  • 变量名只能包含数字,字母,下划线(也可有¥$)
  • 数字不能开头
  • 推荐小驼峰命名法(当变量名由多个单词组成的时候,除了第一个单词之外,其他单词首字母都大写)

   3.理解类型转换

long 表示的范围更大,可以将 int 赋给给 long,但是不能将 long 赋给 int.

double 表示的范围更大,可以将 int 赋值给 double ,但是不能将double赋值给int.

  • 不同数字类型的变量之间赋值,表示的范围更小的类型能隐式转换成范围较大的类型,反之则不能。
  • int 和boolean是毫不相干的两种类型,不能相互赋值。
  • 使用字面值常量赋值的时候,Java会自动进行一些检查校验,判断赋值是否合理。
  • 强制类型转换可能导致精度丢失,而且不一定可以成功,互不相干的类型之间无法强转。

   4.理解数值提升

int a= 10;
long b= 20;
int c= a+b;//编译出错,提示将long转化成int会丢失精度
long d= a+b;//编译成功
  • 当int和long混合运算的时候,int会提升成long,而int可以转化成long而long不可以转化成int,如果非要用int来接受结果则需要进行强制类型转换。
byte a=10;
byte b=20;
byte c=a+b;
System.out.println(c);//编译报错
  • byte和byte是相同的类型但是计算a+b会先将a和b都提升成int在进行计算,所以最后的结果也是int型赋给c。
  • 由于计算机的cpu通常是按照四个字节为单位从内存中读取数据,所以像byte和short这种低于四个字节的类型会先提升为int再参与计算。

   5.int和string之间的相互转换

int num =10;
//方法一 
string str1 = num+"";
//方法二
string str2 = string.valueof(num);
string str ="100";
int num =integer.parseInt(str);

四、运算符

   1.算数运算符

  • int除以int 还是int,需要计算的话应使用double。
  • 0不能做除数。
  • %表示除余
  • 增量赋值运算符+=  -=  *=  /=  %=(a+=1就是a=a+1)
  • 自增自减运算符++   --

    2.关系运算符

  • ==   !=   <   >   <=   >=
  • 关系运算符的表达式返回值都是boolean类型

    3.逻辑运算符

  • &&   ||   !(操作数和返回值都是boolean)
  • 前两者都是短路求值的规则,对于&&,如果左侧表达式值为false,则表达式的整体的值一定是false,无需计算右侧表达式;对于||,如果左侧表达式为true则整体的值一定是true,无需计算右侧表达式。

    4.位运算符

  • &(按位与)   | (按位或)  ~ (按位取反)  ^(按位异或)
  • java当中对数据操作的最小单位不是字节而是二进制

    5.移位运算

  • <<    >>    >>>(都是按照二进制来运算)
  • <<  最左侧不要了,最右侧补0.
  • >>  最右侧不要了,最左侧补0.(正数补0,负数补1)
  • >>> 无符号右移,最右侧位不要了,最左侧补0

    6.条件运算符

  • 表达式1?表达式2:表达式3
  • Java中唯一的三目运算符

补充:给定一个十进制整数,如何转化成二进制形式,如何转化成十六值形式?

   转化成二进制:除二取余,自下而上。

   转化成十六进制:除十六取余,自下而上。

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值