Java入门学习(二)——数据类型、运算符

本文介绍了Java的基础数据类型,包括整型、浮点型、字符型和布尔型,详细讲解了各种类型的特点和默认值。此外,还讨论了数据类型的转换规则,特别是整型到浮点型转换可能的精度损失。接着,文章阐述了Java中的运算符,如算术、赋值、比较和逻辑运算符,以及位运算符的使用。特别提到了自增、自减运算符的不同用法以及字符串拼接的特性。
摘要由CSDN通过智能技术生成

目录

 

数据类型

基本数据类型

引用数据类型

数据类型的转换

运算符

算术运算符

赋值运算符

比较/关系运算符

逻辑运算符

位运算符

交换值的方式:


数据类型

基本数据类型

数值型

1. 整型

byte:字节型

占1个字节(8位)

 -2^7 ~ 2^7-1 = -128~127。

默认值是0

short:短整型

占2个字节

-2^15 ~ 2^15-1 = -32768~32767。

默认值是0

int:整型

占4个字节

-2^31 ~2^31-1。

默认值是0

int i = 0b0011;

int i = 0x23;
//从JDK1.7开始,允许数字中间插入_分隔数字,在编译的时候,会自动省略_

int i = 100_000_000;

Java中整数默认就是int类型

long:长整型

占8个字节。

默认值是0L

2. 浮点型

float:单精度

4个字节。

默认值是0.0f

float f = 3.2f;

double:双精度

8个字节

Java中的小数默认就是double类型

默认值是0.0

注意:Java中的数值型类型都是有符号的。

double d = 4.5;

double d = 3.8D;

double d = 3e4; 
double d = 30000.0;

double d = 3p2;//十六进制的科学计数法的表示形式

字符型:char

2个字节

0-65535

char c = ‘f’;

char c = ‘中;

转义字符:

\t  制表符 

\r 回车 

\n 换行

\\ 反斜杠 

\’单引号 

\”双引号

默认值: ‘\u0000’---以\u开头表示这个字符是它对应的UTF-8的编码

3. 布尔型

boolean

大小根据操作系统和JDK版本不同而定

true/false

默认值:false

引用数据类型

类:class

接口:interface

数组:[]

数据类型的转换

隐式转换(自动类型转换)

byte b = 3;

int i = b;

转换规律一:byte->short->int->long

long l = 20;
//20默认是int类型,int类型的值可以赋值给long类型。
//在int类型的而取值范围内,将值直接赋值给long类型,可以不加L

float f = 2.2f;

double d = f;

转换规律二:float->double

int i = 3;

float f = i;

转换规律三:int->float,可能会产生精度损失

float f = -25;//true

float f = 25.0;//false

long l = 34;

转换规律四:任何一个整型都可以赋值给浮点型的变量,但是可能产生精度损失

例如:int->double 会产生精度损失

char c = ‘e’;

int i = c;

转换规律五:char -> int

 

//这两种写法在编译时期就已经转换成了对应的形式了

char c = 98;//可以--> char c = ‘b’;

short s = ‘b’;//可以---> short s = 98;

char c = -1; //编译报错

//分开编译的,编译完了char c = ‘b’; ‘b’已经以字符形式存在了内存中

//由于两句话是分开编译的,所以现在JVM已经不确定c变量所表示表示的字符是否在short类型的取值范围内了。

char c = ‘b’;

short s = c;//false

 

各个基本类型之间是平等的,不存在大小或者说是父子关系。

强制类型转换:

int i = 5;

byte b = (byte)i;

当把大的类型转换为小的类型的时候,需要强制转换

float f = 3;//3.0f

int i = (int)f;

double d = 3.8;

int i = (int)d;//i = 3;

当把浮点型数据转换为整型变量的时候,需要强制类型的转换。小数转换成整数的时候,不是四舍五入,而是舍弃掉小数部分。因此,小数转换整数的时候,也会产生精度损失。

 

运算符

算术运算符

  1. +:加
  2. -:减
  3. *:乘
  4. /:除
  5. %:取模 ,取余。对于负数的取余,先按照正数的取余运算,运算完成之后看%左边的数字的符号,如果左边的数是正数,结果就是正数,如果左边的数字是负数,结果是就是负数。
  6. ++:自增 。相当于在原来的基础上加1。++在前,这个变量是先自增,然后再参与其他的运算。++在后,先进行其他运算,然后这个变量再自增 。只有自增运算的时候,++在前在后结果一样。
  7. --:自减
  8. +:字符串拼接运算

注意:

1. 两个int类型运算完后之后,结果一定是int类型

2. byte和short类型在进行运算的时候,底层会自动提升为int类型,再进行计算

3. 对于byte b = 3 + 4; JVM在编译的时候会进行自动优化,编译完成之后,实际上这句话就已经成了byte b = 7; 

4. byte类型的数据可以进行自增运算,在运算完成之后,Java在底层会对结果做一次强制类型的转换,原来是byte类型就再转换会byte类型

 

赋值运算符

包括;= 、+= 、-= 、*=、 /=、 %= 、&= 、|=、 ^=

=:进行赋值运算

int i = 5;

i += 2;//i = i + 2;

byte b = 25;

b += 5;//可以

注意:除了=以外的赋值运算符,在使用之前,这个变量必须有初始值。

 

比较/关系运算符

  1. ==:等于 
  2. !=:不等于
  3. > < >= <=:大于,小于,大于等于,小于等于
  4. instanceof :用来判断对象与类的关系的

 

逻辑运算符

  1. &:And
  2.  | :OR 或
  3.  ! :NOT 非
  4.  ^ :异或 
  5. &&:短路
  6. ||:短路或

规则:true&true=true  true&false=false false&true=false  false&false=false

true|true=true true|false=true false|true=true fasle=false=false

!true=false !false=true

true^true=false true^false=true false^true=true false^false=false

&&:短路与,运算规则和&完全一样,但是&&有短路特性,如果&&之前的运算结果确定为false,那么&&之后的运算就不再进行了。

 

位运算符

  1. &:与 。将数字转换成二-进制之后,低位次对齐,高位次不足补0 ,将1看做true ,将0看做false ,然后进行按位与操作,将结果转化为十进制显示。
  2. |:或 。将数字转化成二进制之后,低位次对齐,高位次不足补0,1看做true , 0看做false ,进行按位或操作,然后将结果转化为十进制显示。
  3. ^:异或 。^:将数字转换成二进制,低位次对齐,高位次不足补0 ,进行按位异或操作,将数据转换为十进制显示。
    奇数^偶数=奇数
  4. <<:左移。将数据转化为二进制之后,按照指定的位数进行左移,移除的部分舍弃,低位次空出补0 ,然后将数据转化为十进制显示在一定范围内,左移是越移越大。(这个数字左移几位,就是剩以2的几次方)
  5. >>:右移 。将数据转化为二进制之后,按照指定的位数进行右移,移除的部分舍弃,高位次空出,正数补0 ,负数补1 ,然后将数据转化为十进制显示。(一个数字右移几位,就是将这个数字除以2的几次方,然后取整)
    正数右移,越移越小,趋近0
    负数右移,越移越大,趋近-1
  6. >>>:无符号右移 。和右移类似,但是最高位空出之后,无论正数还是负数,一律补0
  7. ~:取反。将数字转化为二进制之后, 1变0,0变1,然后最高位-128其余位按照二进制向十进制的转规则计算,然后加上-128

注意:位运算是针对整数进行运算的

 

交换值的方式:

方式一:

int i = 3,j = 4;

int temp = i;

i = j;

j = temp;

方式二:

int i = 3, j = 4;

i = i + j;
j = i - j;
i = i - j;

i += j; 
j = i - j;
i -= j;

方式三:

int i = 3, j = 4;

i = i ^ j;
j = i ^ j; 
i = i ^ j; 

i^=j; 
j^=i; 
i^=j;

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值