Java数据类型与运算符

Java数据类型

程序对每一种数据都定义了数据类型,并分配了不同的内存空间

按数据类型分类分为基本数据类型与引用数据类型.

基本数据类型
数值型 整数型:byte(1字节) short(2字节) int(4字节) long(8字节)
浮点型: float(4字节) double(8字节)

字符型: char

布尔型: boolean (true/false)

引用数据类型
类(class) 接口(interface) 数组([ ])

Java基本数据类型

整数类型:

类 型占用存储空间表数范围
byte1字节-128 ~ 127
short2字节-215 ~ 215-1
int4字节-231 ~ 231-1
long8字节-263 ~ 263-1

Java语言的整型常量默认为int型,声明long型常量可以后加‘ l ’或‘ L ’

浮点类型

类 型占用存储空间表数范围
float4字节-3.403E38~3.403E38
double8字节-1.798E308~1.798E308

Java 浮点型常量默认为 double 型,如要声明一个常量为 float 型,则需在数字后面加 f 或 F
float比整数类型的任何一个都要大.

        double a=1.5;
        // Java浮点型常量默认double 如要声明一个常量为float型 需在后面加上f/F
        float b=8.6f;
        System.out.println(b-a);
        System.out.println(b-a==7.1);//b-a不等于7.1  因为浮点型数都是以近似值存储的

逻辑型boolean(布尔)

boolean 类型适于逻辑运算,一般用于程序流程控制 。
boolean 类型数据只允许取值 true 或 false 。

字符型char

char 型数据用来表示通常意义上的“字符”,char占2字节,字符用单引号括起来的单个字符,例如:

char a = 'a';  //字符型
char b = '国';
System.out.println(a + 0);//97
System.out.println(b + 0);//22269

进制

二进制:0,1 ,满2进1.以0b或0B开头。
十进制:0-9 ,满10进1.
八进制:0-7 ,满8进1. 以数字0开头表示。
十六进制:0-9及A-F,满16进1. 以0x或0X开头表示。

101112131415
ABCDEF
a=020; //八进制 以0开头
System.out.println(a);
b=0b10; //二进制 以0b OB 开头
System.out.println(b);
b=0x21AF; //十六进制 以0x OX 开头
System.out.println(b);

基本数据类型的转换

java中可以从任意基本类型转型到另外的基本类型
例外:boolean 类型不可以转换为其他的数据类型。

转换分为默认转换与强制转换.

默认转换
转换原则:容量小的类型默认转换为容量大的数据类型;

数据类型按容量大小排序为:

byte,short,char->int->long->float->double

byte,short,char之间不会互相转换,他们三者在计算时首先会转换为int类型

强制转换

当容量大的数据类型要转换为容量小的数据类型,就需要强制转换.

强制转换可能会出现精度降低

float e = 9.6f; //强制转换 可能出现精度降低
int f = (int) e;
System.out.println(f); //结果为9

强制转换可能会出现数据丢失

float e = 129f; //强制转换 可能出现数据丢失
byte f = (byte) e;
System.out.println(f); //结果为-127

算数运算符与字符串连接运算符

算术运算符:+,-,*,/,%,++,–
字符串连接运算符:+

int a=1;
int b=2;
char c='a';
String d="20";
System.out.println(a+b); //加法运算 数值+数值
System.out.println(a+c);//98  字符+数值
System.out.println(d+a);//连接 201  数值+字符串=字符串

++的用法

        int e=1;
        e++;
        System.out.println(e);//2
        int f=e++ +1;
        System.out.println(f);//3 e=3  ++在后 先运算 再自加
        int g=++e +1;
        System.out.println(g);//5 e=4  ++在前 先自加 再运算

比较运算符

==相等于 4==3 false
!=不等于 4!=3 true
<小于 4<3 false
>大于 4>3 true
<=小于等于 4<=3 false
>=大于等于 4>=3 true
instanceof检查是否是类的对象 “Hello” instanceof String true

比较运算符的结果都是true 或者 false

逻辑运算符

&—逻辑与 | —逻辑或 !—逻辑非
&& —短路与 || —短路或 ^ —逻辑异或

aba&ba|b!aa^ba&&ba||b
truetruetruetruefalsefalsetruetrue
truefalsefalsetruefalsetruefalsetrue
falsetruefalsetruetruetruefalsetrue
falsefalsefalsefalsetruefalsefalsefalse

&与&&的区别

        int a=100;
        int b=90;
        int c=110;
        System.out.println(a>b & b>c);//true & false= false
        System.out.println(a<b & b>c);//false & false = false
        System.out.println(a>b & b<c);//true & true = true

        System.out.println(a>b && b>c);//true && false = false
        System.out.println(a<b && b>c);//false && false =false
        System.out.println(a>b && b<c);//true && true = true


        int d=10;
        int e=13;
        System.out.println(d>e && ++d>e);//如果前面的为假  后面的就不进行运算 false
        System.out.println(d);//d=10
        System.out.println(d<e && d++>e);//false
        System.out.println(d);//d=11

赋值运算符

运算符用法举例等效的表达式
+=a += ba = a+b
-=a -= ba = a-b
*=a *= ba = a*b
/=a /= ba = a/b
%=a %= ba = a%b

条件运算符

语法:
(条件表达式)? 表达式1:表达式2;
为true,运算后的结果是表达式1;
为false,运算后的结果是表达式2;

 int a=10;
        int b=20;
        int c=(a>b)?a:b;
        System.out.println(c);//20  如果a>b是真 c=a 反之等于b

位运算

位运算符
<<空位补0,被移除的高位丢弃,空缺位补0。
>>被移位的二进制最高位是0,右移后,空缺位补0;最高位是1,空缺位补1。
>>>被移位二进制最高位无论是0或者是1,空缺位都用0补。
&二进制位进行&运算,只有1&1时结果是1,否则是0;
|二进制位进行 | 运算,只有0 | 0时结果是0,否则是1;
^相同二进制位进行 ^ 运算,结果是0;1^1=0 , 0^0=0不相同二进制位 ^ 运算结果是1。1^0=1 , 0^1=1
~正数取反,各二进制码按补码各位取反负数取反,各二进制码按补码各位取反
  int d=100;
        System.out.println(d<<2); //400   左移两位  
        System.out.println(d>>2);//25  右移两位
位运算符
<<空位补0,被移除的高位丢弃,空缺位补0。
>>被移位的二进制最高位是0,右移后,空缺位补0;最高位是1,空缺位补1。
>>>被移位二进制最高位无论是0或者是1,空缺位都用0补。
&二进制位进行&运算,只有1&1时结果是1,否则是0;
|二进制位进行 | 运算,只有0 | 0时结果是0,否则是1;
^相同二进制位进行 ^ 运算,结果是0;1^1=0 , 0^0=0不相同二进制位 ^ 运算结果是1。1^0=1 , 0^1=1
~正数取反,各二进制码按补码各位取反负数取反,各二进制码按补码各位取反
  int d=100;
        System.out.println(d<<2); //400   左移两位  
        System.out.println(d>>2);//25  右移两位
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值