数据类型、变量及运算符

目录

一、数据类型和变量

1.字面常量

2.数据类型

2.1基本数据类型

2.2引用数据类型

2.3定义变量

2.4重点

2.5类型转换

1.强制类型转换(显示转换)

2.自动类型转换(隐示转换)

3.注意

2.6string类转换

二、运算符

1.算术运算符

(1)基本的四则运算:(+ - * % /)

(2)增量运算符:(+=   *=   -= ...)

 (3)自增自减(++ --)

2.关系运算符

3.逻辑运算符

4.位运算符

5.位移运算符

6.条件运算符

7.运算符的优先级


一、数据类型和变量

1.字面常量

运行期间固定不变(eg. 1 ,'d' , "asdf" 等)

2.数据类型

数据类型:基本数据类型引用数据类型

2.1基本数据类型

四类:整型、浮点型、字符型和布尔型

八种:

类型          大小byte        类

byte          1                     Byte

short         2                     Short

int             4                     Integer

long          8                     Long

float          4                     Float

double      8                     Double

char          2                     Character

boolean    没有规定         Boolean

2.2引用数据类型

String、数组等 

2.3定义变量

public static void main(String[] args) {
        byte a=1;
        short b=2;
        int c=10;
        long d=10L;//or 10l  默认数字为四个字节
        float e=1.0F;//or 1.0f  默认小数为双精度浮点型
        double f=2.0;
        char g='h';
        boolean h=true;
    }

2.4重点

*方法类变量一定要初始化(严格规范)。(而成员变量无需初始化 存在默认0值*boolean 默认false)

*包装类能找到对应的最大值最小值

System.out.println(Integer.MAX_VALUE);//最大值
System.out.println(Integer.MIN_VALUE);//最小值

*整型默认int 型,浮点数默认double型,

*char 类型c语言使用ASCII码,而java使用Unicode表示字符,占两个字节可以表示更多的字符,包括汉字。出现繁体等乱码,可以javac时加上-encoding UTF-8

eg. javac -encoding UTF-8 text.java

2.5类型转换

1.强制类型转换(显示转换)

大范围到小范围,且不同数据类型不能相互转换。

long a=10L;
int b=(int)a;

*会导致精度丢失,导致丢失数据

2.自动类型转换(隐示转换)

*数据小范围到大范围,eg int -> long

*初始化

byte a=10;
short b=20;
3.注意

运算会转换为该表达式最大的数据类型。

int a=10;
long b=20;
int c=a+b;//报错
int c=(int)(a+b);//可能成功
byte a=10;
byte b=10;
byte c=(byte)(a+b);//最小转换为int

2.6string类转换

int 、double等到string

int num=10;
String a=String.valueOf(num);

string 到int 、、、 parse

String a="100";
int b=Integer.parseInt(a);

二、运算符

算术运算符,关系运算符,逻辑运算符,位运算符,位移运算符及条件运算符等。

1.算术运算符

(1)基本的四则运算:(+ - * % /)

都是二目操作符,

*对于% or / 右操作数不能为0(算术异常)。/  会向下取整,去掉小数部分。

*double 可以取模 % 但是无意义

*运算向类型范围大的先转换再计算

(2)增量运算符:(+=   *=   -= ...)

*只有变量使用,把操作结果赋值给左操作数。(具有强制类型转换)无需再次强转

char ch='a';
int b=0;
b+=ch;

 (3)自增自减(++ --)

只有变量使用,分为前置和后置

前置先+1或-1,再执行其他操作(传参,运算,取值);

后置先执行其他操作再+1或者-1。

2.关系运算符

主要:== !=  > < <= >= ,计算结果true or false

*多次判断不能连续写 (1<a<3 error)

3.逻辑运算符

主要:逻辑与&& 逻辑或 || 逻辑非!结果都是boolean值

 (1)&&

表达式1&&表达式2

表达式一为false就不判断表达式二,结果为false

表达式一为true二也为true时,结果才为true

(2)||

表达式1为true就不判断表达式二,结果为true

两表达式一个为true则结果为true

(3)!

!true  -- false

!false-- true

比较 |按位或  &按位与

    System.out.println(10>20&10/0==0);//程序抛出异常
    System.out.println(10<20|10/0==0);//程序抛出异常

不会像|| && 短路,| & 会判断两个表达式

4.位运算符

主要:按位或|  按位与& 按位异或^二目运算符, 按位取反~  单目

1byte 由八个二进制位组成

(1)按位与&

对应两个二进制位都是1取1,否则0;

(2)按位或|

对应两个二进制位有一个1取1,否则0;

(3)按位异或^

同 0 异 1;

(4)按位取反~

1->0   0->1 

5.位移运算符

<< >> >>> 二目

操作补码

(1)左移<< 

舍弃最左侧位,右侧补0

(2)右移>>

左侧补符号位 ,右侧舍弃 (符号位不变)

(3)无符号右移>>>

左侧补0 

*位移一位跟2的次方相关

6.条件运算符

三目运算符

表达式?1:2;

表达式正确就取1,表达式错误取2

*不能单独存在,不被获取

*1,2类型必须相等,除非可以隐式转换

int a=10;
int b=20;
a>b?a:b;//error 未被接收
a>b?1:1.0;//类型不同

7.运算符的优先级

* /高于+ - 

+ 高于>> 

可能会导致运算出现歧义,所以尽量使用()括号来规范需要优先计算的式子

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值