💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# 大数据学习笔记第2天-Java语言基础 # ## 大纲 ## - 关键字 - 标识符 - 常量和变量 - 运算符 - 流程控制 - 方法 - 数组 ## 第一节课 - 关键字 - 标识符 - 常量与变量 ## 第二节课 - 二进制 - 进制基本转换 - 负数的表现形式 ## 第三节课 - 变量 - 基本数据类型 ## 第四节课 - 基本数据类型之间的类型转换 ## 关键字 Java系统中已经赋予了特殊含义的单词。特点:全部是小写字母。 Java中的保留字:现在暂时没有使用,以后可能会使用的单词,如:goto, const ### 关键字的分类: - 定义数据类型; - 定义流程控制; - 布尔值; - 引用类型空值; - 访问权限修饰符; - 用于定义类、方法、变量修饰符的关键字; - 用于定义类与类之间关系的关键字; - 用于定义建立实例及引用实例,判断实例的关键字; - 用于异常处理的关键字; - 用于包的关键字; - 其他修饰关键字; ### 分析例子 Hello.java中用到的关键字: public class Hello{ public static void main(String[] args){ System.out.println("Hello World"); } } 关键字分析: - public: 权限修饰符,说明该类是公共的; - static: 静态类; - class: 用于定义类 - void: 该方法返回空值; ## 标识符 用于给方法、变量、类、接口等命名的字符序列; 组成规则: - 由26个英文字母大小写、$、下划线、数字组成; - 不能以数字开头; - 不可以使用关键字,但可以包含关键字; Java中严格区分大小写,比如:main和Main是2个不同的方法; ### 标识符的命名规范 Java中的名称规范: - 包名:多单词组成时,所有单词小写 - 类名、接口名:多单词组成时,所有单词首字母大写 - 变量名、方法名:多单词组成时,第一个单词的首字母小写,第二个单词开始每个单词的首字母大写 - final变量名:所有的字母大写,多单词时单词之间使用下划线分隔 - 在命名时,为了提高代码的可阅读性,需要做到见名知意; ## 常量与变量 常量表示不能改变的值; Java中常量(6种字面量常量)的分类: - 整型常量:直接出现的整数 - 小数常量:直接出现的小数 - 布尔值常量:只有2个值true或false - 字符常量:用单引号括起来的,1个数字,1个字母或符号 - 字符串常量:将1个或多个字符用双引号括起来 - null常量:只有一个值 null 对于整数,有4种表现形式: - 二进制:由0,1组成,满2进1,用`0b/0B`开头表示(大小写一样) - 八进制:由0,7组成,满8进1,用`0`开头表示 - 十进制:由0,9组成,满10进1 - 十六进制:由0-9,A-F组成,满16进1,用`ox/0X`表示(大小写一样) 计算机底层是二进制存储数据的; ## 二进制 - 每个位只能表示 0 和 1 两种状态。 - 多个位组合起来可以表示更多的状态 ## 十进制转二进制、八进制、十六进制 计算机以`8bit`作为存储数据的基本单位。 `1byte = 8bit`,1个字节等于8个比特。 - 1byte=8bit - 1kb=1024byte - 1M=1024kb - 1G=1024M - 1T=1024G - 1P=1024T - 1E=1024P ### 实现原理: - 八进制:把二进制数三位一组,计算出对应的十进制数,组合起来就是对应的八进制数。 - 十六进制:把二进制数四位一组,计算出对应的十进制数,组合起来就是对应的十六进制数。 ### 如何从十进制转化为二进制? 除以2,直到商为0,将余数倒排。 ![](./img/02/8bit.jpg) 十进制转八进制,基数换成8;十进制转十六进制,基数换成16。注意:0-9只能表示最多10个数字,所以A:10, B:11, C:12, D:13, E:14, F:15, G:16。 ## 二进制、八进制、十六进制转十进制 ### 从二进制转十进制 位权展开法,每位上的数字x进制数的n次幂(从右往左,从0开始)求和。 ### 从二进制转八进制 每三位为一组,最后组合成的就是八进制 ### 从二进制转十六进制 每四位为一组,最后组合成的就是十六进制 了解:遵守 8421 法则。 ## 负数的表现形式 - 补码:负数在计算机中都是以补码的形式存在的。最高位表示符号位:0正数、1负数。负数补码是对其原码取反加1,不包含符号位。 - 正数:原码,反码,补码(二进制)都相通。 ### 求一个负数的补码 1. 求对应正数的原码 2. 把正数的原码符号位变1(负数的原码) 3. 把负数的原码除了符号位之外,取反(负数的反码) 4. 在反码基础上+1(负数的补码) ### 磨刀小试:-7的二进制 数字7,使用8421法则,是1+2+4,所以:7转化为二进制是 0000 0111 0000 0111 // 7转化为2进制 1000 0111 // 符号位变为1,表示是负数,得到负数的原码 1111 1000 // 将负数的原码,除了符号位进行取反,得到反码 1111 1001 // 将反码加1,最终得到负数的二进制 ### 总结:快速求一个负数的补码规律 +7 0000 0111 -7 1111 1001 从右往左,遇到第1个1,往右原样,往左全取反。 ## 变量 - 内存就是程序运行的地方,存放着数据和指令。 - 不同的数据存储在不同的空间,互不影响。 - 内存空间使用之前,必须先申请。 ### 变量的概念: - 内存中的一块存储区域。 - 该区域有自己的名称(变量名)和类型(数据类型)。 ### 为什么要定义变量 就是为了使用内存空间。 ### 变量的三个要素 - 类型(数据类型:能存放的数据类型) - 变量(标识符:通过标识符可以访问内存空间里的值) - 值(存储的内容) ### 定义变量的格式 - 数据类型 变量名=初始值; - 数据类型 变量名; 变量名=初始值; ## 基本数据类型(四类八种) 整数默认是:int;小数默认是:double;字符串是String类(是引用数据类型) - 数值型 - 整数类型:byte, short, int, long - 浮点类型:float, double - 字符型:char - 布尔型:boolean ![](./img/02/2018-07-15_114638.png) ## 定义变量的注意事项 ### 作用域 变量定义在哪个大括号里,它的作用就是所在的大括号,同一个作用域中,不能定义同名的变量(类型不同也不行); ### 初始化值 - 初始化有两种格式,定义时赋值,或先定义后赋值; - 变量在使用前一定要赋值 ### 可读性 一行上最好只定义一个变量(虽然一行上可以定义多个变量,如:int x,y,z;) ## 类型转换 - 类型相同的数才能进行运算。 - 不同类型的数进行运算,首先要进行类型转换,变成相同类型: - 有的转换时系统自动完成的(自动类型转换/隐式类型转换); - 有的转换时强制手动完成的(强制类型转换/显式类型转换); - 什么时候用到强制类型转换(大范围转小范围) 举例: - 自动类型转换:double d = 1 + 2.5; //整型自动转换为double类型 - 强制类型转换:byte b = (byte)128; //1byte的取值范围是: -128-127 当定义一个字符类型,赋值一个整数,会自动按照ASCII表进行转换: ![](./img/02/ASCII.jpg) ### 表达式的数据类型自动提升: - 所有byte, short, char型将提升为int型; - char型参与运算实际上是对应的Unicode编码值; - 如果表达式中还有更大表数范围的类型,则继续提升; - boolean类型不参与数值运算,也不能和其他类型进行转换; ![](./imgg/02/2018-07-15_120838.png) 如果遇到:char 和 byte 相加的运算,会全部转换为整型,再进行运算