java基础

1. 常量

  1. 字符串常量
  2. 整数常量
  3. 小数常量
  4. 字符常量:单个数字,单个字母,单个符号
  5. 布尔常量
  6. 空常量

2. 进制

  • 二进制:0/1组成,以0b开头,b大小写都可以,JDK7可以表示二进制
  • 八进制:0-7,0开头
  • 十进制:整数默认
  • 十六进制:0-F,0x开头
  • 进制转换:

3. 源码反码补码

3.1. 源码

就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
通过一个字节,也就是8个二进制位表示+7和-7
0(符号位) 0000111
1(符号位) 0000111

3.2. 补码

正数的补码与其原码相同;
负数的补码是在其反码的末位加1。

3.3. 反码

正数的反码与其原码相同;
负数的反码是对其原码逐位取反,但符号位除外。
#4. 变量

4.1. 基本数据类型

4.1.1. 整数型

  • Byte 占一个字节 -128~127
  • Short 占两个字节 -215~215-1
  • Int 占四个字节 -231~231-1
  • long 占八个字节 -263~263-1

4.1.2. 浮点型

  • float 占四个字节 -3.403E38~3.403E38

4.1.3. 字符型

  • char 占两个字节 0~65535
  • java中char可以存放中文吗?
    可以 英文java中char采用的是unicode编码占两个字节,中文也是两个字节

4.1.4. 布尔型

  • Boolean boolean理论上是占八分之一个字节,因为一个开关就可以决定是true和false了,但是java中boolean类型没有明确指定他的大小

4.1.5. 注意点

  • byte与byte,short,char 会提升为int
  • java有常量优化机制,等式中的常量会在编译时进行运算
  • 在混合运算时,(byte,short,char)不会相互转换,都会提升为int,其他提升一个等级;int–long-double
  • float比long大
    Long: 8个字节
    float:4个字节
    IEEE754
    4个字节是32个二进制位
    1位是符号位
    8位是指数位
    00000000 11111111
    0到255
    1到254
    -126到127
    23位是尾数位
    每个指数位减去127
    A:它们底层的存储结构不同。
    B:float表示的数据范围比long的范围要大
    long:2^63-1
    float:3.410^38 > 210^38 > 28^38 = 22338 = 2*2^114 > 2^63-1

4.2. 引用数据类型

4.2.1. 数组

  • 整数类型:byte,short,int,long——初始值0
  • 浮点型:float,double——初始值为0.0
  • 布尔型:boolean——初始值为false
  • 字符型:char——默认值为‘\0000’

5. 内存分配

  • 栈 存储局部变量
  • 堆 new出来的对象
  • 方法区 编译之后 的class文件进入内存
  • 本地方法区 与系统相关
  • 寄存器 给CPU使用

6. 运算符

6.1. 基本运算符

  • 取余
    对二取余可以最为判断条件
  • 自增减
    ++a 为先加再用
    a++ 为先用再加

6.2. 逻辑运算符

6.2.1. &&与&的区别

效果相同,但是&&左边为false,右边就不会执行了

6.2.2. ||与|的区别

效果相同,同上与短路效果

6.3. 位运算

  • 位与—— &
    有0则0
    -位或—— |

  • 位且—— ^

  • 位非—— ~

  • ^ 的特点
    一个数据对另一个数据异或两次,该数不变

    • 交换两个数据,不需要定义第三方变量
        public class NoTemp {
            public void one(int x, int y){
            x = x + y;
            y = x - y;
            x = x - y;
            System.out.println("x的值为:"+x+" "+"y的值为:"+y);
            }
            private void two(int x, int y) {
            x = x^y;
            y = x^y;
            x = x^y;
            System.out.println("x的值为:"+x+" "+"y的值为:"+y);
            }
            
            public static void main(String[] args){
                NoTemp noTemp = new NoTemp();
                int x = 100;
                int y = 1200;
                noTemp.one(x,y);
                noTemp.two(x,y);
            }
            }
    
  • <<左移
    左边高位丢弃,右边补齐0:左移即为就是乘以2的几次幂

  • >>右移
    无论最高位是0还是1,左边补齐0: 向右移动几位就是除以2的几次幂

6.4. 三元运算符

(关系表达式)? 表达式 1 : 表达式2
如果表达式成立则为1反之为2

三元运算符可以做的if都ok
if可以的三元运算符不一定可行
三元运算符 是一个运算符,不能输出

7. 流程控制

7.1. switch注意点

  1. case的值:可以提升到int 的都ok,java7开始支持String
  2. case的值不能相同,且不能为变量
  3. default可以省略,但是不建议省略|写在switch任意位置都有效果会影响程序在switch中执行的位置
  4. break省略会造成case穿透
  5. 建议switch固定值,建议if为区间
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值