JavaSE

JavaSE

一、走进Java语言

二、面向过程编程

1. 注释

//单行注释

/*
	多行注释
*/

/**
 * 特殊注释
 *
 */

2. final关键字

希望常量的值不变,用final修饰的变量只有第一次赋值时可以修改

public static void main(String[] args) {
    final int a;
    a = 777;   //第一次赋值
}

3. 二进制

一个位也叫一个bit,8个bit称为1字节,16个bit称为一个字,32个bit称为一个双字,64个bit称为一个四字,我们一般采用字节来描述数据大小。

注意这里的bit跟我们生活中的网速MB/s是不一样的,小b代表的是bit,大B代表的是Byte字节(8bit = 1Byte字节),所以说我们办理宽带的时候,100Mbps这里的b是小写的,所以说实际的网速就是100/8 = 12.5 MB/s了。

符号数
首位是符号位(1代表负数,0代表正数),下面四个bit为例:

  1. 原码:计算机不好运算
  • 最大:0111 => 7
  • 最小:1111 => -7
  1. 反码:有正(0000)负(1111)零
  • 正数的反码是其本身
  • 负数的反码是在其原码的基础上, 符号位不变,其余各个位取反
  1. 补码:最终解决方案
  • 正数的补码就是其本身 (不变!)
  • 负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1(即在反码的基础上+1,此时1000表示-8)
  • 对补码再求一次补码就可得该补码对应的原码。
    比如-7原码为1111,反码为1000,补码就是1001了,-6原码为1110,反码为1001,补码就是1010。所以在补码下,原本的1000就作为新 > 增的最小值-8存在。
    所以现在,1111代表的不再是-0,而是-1,相应的,由于消除-0,负数多出来一个可以表示的数(1000拿去表示-8了),那么此时4bit位能够表示的范围是:-8~+7(Java使用的就是补码!)在了解了计算机底层的数据表示形式之后,我们再来学习这些基本数据类型就会很轻松了。
public static void main(String[] args) {
    int a = 2147483647;   //int最大值
    a = a + 1;   //继续加
    System.out.println(a);
}

在这里插入图片描述
什么情况???怎么正数加1还变成负数了?请各位小伙伴回想一下我们之前讲解的原码、反码和补码。
我们先来看看,当int为最大值时,二进制表示形式为什么:

2147483647 = 01111111 11111111 11111111 11111111(第一个是符号位0,其他的全部为1,就是正数的最大值)

那么此时如果加1,会进位成:

10000000 00000000 00000000 00000000

各位想一想,符号位为1,那么此时表示的不就是一个负数了吗?我们回想一下负数的补码表示规则,瞬间就能明白了,这不就是补码形式下的最小值了吗?
所以说最后的结果就是int类型的最小值:-2147483648,是不是感觉了解底层原理会更容易理解这是为什么。

4. 整数类型

  • byte 字节型 (8个bit,也就是1个字节)范围:-128~+127

  • short 短整形(16个bit,也就是2个字节)范围:-32768~+32767

  • int 整形(32个bit,也就是4个字节)最常用的类型:-2147483648 ~ +2147483647

  • long 长整形(64个bit,也就是8个字节)范围:-9223372036854775808 ~ +9223372036854775807

  1. long类型要特别注意:数字后面加L / l。
public static void main(String[] args) {
    long a = 922337203685477580L;
}
  1. 对长数字可以用下划线分割每一位:
public static void main(String[] args) {
   int a = 1_000_000; 
}
  1. 也可以以八进制或者十六进制表示一个常量值
public static void main(String[] args) {
    System.out.println(0xA); //十六进制10
    System.out.println(012); //八进制10
}

5. 浮点类型

给常量后面添加大写或小写的F来表示这是一个float类型的常量值:

public static void main(String[] args) {
    float f = 9.9F;   //这样就可以正常编译通过了
}

6.布尔类型

public static void main(String[] args) {
    boolean b = true;   //值只能是true或false
    System.out.println(b);
}

7. 隐式类型转换规则:

byte→short(char)→int→long→float→double

8. 加分可以实现字符串的拼接

public static void main(String[] args) {
    String str = "伞兵" + "lbw";   //我们可以使用加号来拼接两个字符串
    System.out.println(str);
}

还可以和基础类型拼接

public static void main(String[] args) {
    String str = "伞兵" + true + 1.5 + 'A';
    System.out.println(str);
}

9. 强制类型转换

public static void main(String[] args) {
    int a = 10;
    short b = (short) a;   //在括号中填写上强制转换的类型,就可以强制转换到对应的类型了
}

10. 位运算

位运算符: & | ^ ~

在这里插入图片描述

11. 逻辑运算符

&& 与运算,要求两边同时为true才能返回true
|| 或运算,要求两边至少要有一个为true才能返回true
! 非运算,一般放在表达式最前面,表达式用括号扩起来,表示对表达式的结果进行反转

12. 代码块与作用域

变量的使用范围,仅限于其定义时所处的代码块,一旦超出对应的代码块区域,那么就相当于没有这个变量了。在这里插入图片描述

13. switch

switch (目标) {   //我们需要传入一个目标,比如变量,或是计算表达式等
  case 匹配值:    //如果目标的值等于我们这里给定的匹配值,那么就执行case后面的代码
    代码...
    break;    //代码执行结束后需要使用break来结束,否则会溜到下一个case继续执行代码
}
public static void main(String[] args) {
    char c = 'A';
    switch (c) {  //这里目标就是变量c
        case 'A':    //分别指定ABC三个匹配值,并且执行不同的代码
            System.out.println("去尖子班!准备冲刺985大学!");
            break;   //执行完之后一定记得break,否则会继续向下执行下一个case中的代码
        case 'B':
            System.out.println("去平行班!准备冲刺一本!");
            break;
        case 'C':
            System.out.println("去职高深造。");
            break;
    }
}

default可以用来处理其他情况:

public static void main(String[] args) {
    char c = 'A';
    switch (c) {
        case 'A':
            System.out.println("去尖子班!");
            break;
        case 'B':
            System.out.println("去平行班!");
            break;
        case 'C':
            System.out.println("去差生班!");
            break;
        default:   //其他情况一律就是下面的代码了
            System.out.println("去读职高,分流");
    }
}
  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值