java学习day02

一.数据类型

1.1 本质

数据存储形式,存储空间大小

1.2 存储

整数存储:

1.3 分类

  1. 基本数据类型

数值型

整型

byte 字节 8bit -128~127

short 短整型 16bit -32768~32767

int 整型 32bit -2,147,483,648~2,147,483,647

long 长整型 64bit

浮点型

float 单浮点 32bit

double 双浮点 64bit

字符型

char 字符 16bit 0~65535

布尔型

boolean 布尔 8bit 00000001 true 00000000 false

  1. 引用数据类型

类,数组,接口

整数默认为int类型 小数默认为double类型 引用类型默认值为null,null不能打印

1.4 类型使用

1.4.1 整形

1.4.2 浮点型

float 32位

double 64位

1.4.3 字符型

使用ACSII码转换,支持unicode编码

1.4.4 转义符

转义符 \ 有意义字符转换为无意义字符

\n 换行

1.4.5 布尔型

布尔型只有ture和false两个
一般用于流程控制 占用1字节,1表示true,0表示false

1.5 类型转化

自动类型转换:低精度到高精度为自动类型转换

强制类型转换:高精度到低精度为强制类型转换(去掉高位,保留低位)

上述图片二进制补码为1000 0010转换为源码为1111 1110值为-126

char转换

二. 变量

2.1 常量

值在生命周期中不可更改

2.2 变量

2.3 变量声明

同作用域变量不能重名

2.4 变量分类

(java中没有全局变量,没有函数,class外不允许写东西)

局部变量:方法中创建的变量(局部变量具有临时性.方法执行结束就消失了,并且只能在当前方法中使用,通过变量名直接使用)

静态变量:在类体中(方法外)使用static创建的变量

成员变量:在类体中(方法外)没有使用static创建的变量

全局:(会导致命名冲突问题)没有任何二次引用(使用.操作符),可以直接访问的变量(c++中类外为全局,类内为非全局)Java中不允许在类外写东西,java已经进行模块化封装,摒弃了全局的概念,所以在java中也不允许执行访问某个变量或方法。

使用.操作符可以更好地寻找变量。

2.5 变量调用

局部变量:局部变量具有临时性.方法执行结束就消失了,并且只能在当前方法中使用,通过变量名直接使用

静态变量:类级别,通过类名.静态变量名使用,如果在当前类中使用当前类的静态变量,类名可以省略

成员变量:对象级别,通过对象.成员变量名调用,在成员方法中可以直接使用变量名调用

2.6 变量调用优先级

2.7默认值

局部变量没有默认值

静态变量和成员变量有默认值

三.运算符

3.1 算数运算

算数运算符: + - * / % ++ --

除法中如果是整数,只要商不要余数.(10/3=3)

优先级:从左到右

/ * % 大于 + -,都是左结合

小数加减不要判断相等

++ --属于一元运算,优先级大于* / % + -

++自身加1,会发生赋值. i++等同于i = i + 1

i++ 和 ++i区别 :

i++ 先初始化赋值,再自身+1

++i 先自身+1,再初始化赋值

3.2 混合运算

当进行多类型混合运算时,结果是参与运算的最大类型.

当只有byte short int char 四种类型中任意一种或多种进行运算,结果一定是int类型.

3.3 关系运算

结果一定是布尔型

< <= > >= == !=

3.4 位运算/逻辑运算

逻辑运算结果都为布尔型

& 位与,两边都为true,结果就是true

| 位或,一边为true,结果就是true

! 位非,取反,true就是false,false就是true(一元运算)

&& 短路与,两边都为true,结果就是true,如果第一个条件为false,则第二个条件不再执行

|| 短路或,一边为true,结果就是true,如果第一个条件为true,则第二个条件不再执行

^ 位异或,两边不一样,结果就是true

当&&和||同时出现时,&&的优先级大于||

3.5 位运算进阶

  1. &也支持两边是数字,计算是转换为二进制进行每位比较,都是1取1,否则取0

运算结果一定不会超过两个数中的最小值.

15&8

15 : 0000 1111 8: 0000 1000 &: 0000 1000

  1. ^也支持两边是数字,转换为二进制进行每位比较,不同取1,相同取0 因此两个相同数进行^,结果为0,并且0和任何数进行^,该数不变

15^8

15:0000 1111 8: 0000 1000 ^: 0000 0111

  1. ~按位非,转换二进制,1变0,0变1(符号位也会变)直接修改内存,内存中存储的是补码.

~12

0000 1100 1111 0011补码 1111 0010 反码 1000 1101 源码

  1. >>:右移运算(考虑符号位,符号位不受影响) 10 >>1,右移1次,会把最右边的一个删除,在最左边补0(负数补1) 右移1次,相当于该数/2

  1. >>>:右移运算(不考虑符号位),只补0,不补1

    System.out.println(10 >>> 2);

    10: 1000 0000 0000 0000 0000 0000 0000 1010

    1111 1111 1111 1111 1111 1111 1111 0101

    // 001111 1111 1111 1111 1111 1111 1111 01

    System.out.println(-10 >>> 2);

    System.out.println(0b00111111111111111111111111111101);

  1. << : 左移运算,只补0, 不补1 左移1次,相当于该数*2

3.6 赋值运算

右结合,当运算中出现多个赋值运算,则从右到左计算

= 把右边的,赋值给左边,如果右边是个运算,则把运算计算完,把结果赋值给左边

+= -= *= /= %=(会进行隐式的类型转换)

-=:左边减去右边,结果赋值给左边,a-= b;等价于a = a - b(有时需要强制类型转化);

byte+byte结果应该为int类型所以 x = x + y会报错

a=5 a=a+=a 5=5+=5 = 50

  • 30
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值