本篇文章是作者自己的学习笔记,每一章没有详细介绍
一、基本概念
- 关键字:有特殊含义的单词,在编写代码中不能作为变量名使用。
- 保留字:不是关键字,但也不能作为变量名使用,例如 goto、const 等。
- 标识符:在编写程序中,程序员能够命名的内容,为变量、函数、类、包等命名的字符序列称为标识符。
- 变量:在 Java 中变量的使用前必须是经过赋值的,没赋值不可以使用。变量是程序中最基础的存储单元,用来存储数据,变量就是在内存中开辟一块空间,通过变量名来访问空间。
二、数据类型
-
基本数据类型(8 种)
- 整形变量:byte、short、int、long。
- byte:1 个字节,8 个二进制位,取值范围 -128~127。
- short:2 个字节。
- int:4 个字节。
- long:8 个字节,在对 long 类型的变量初始化的时候,整形的字面常量默认为 int 类型,要是赋值超过 int 类型会报错,需要在末尾加个 L/l 告诉编译器赋值的是 long 类型,例如 long a = 12249823947239473298L。
- 浮点型:
- float:4 个字节,有效位数是 8 位,浮点类型默认字面常量是 double 类型,需要 float 类型时需要在字面常量后面加 f/F,例如 float a = 10.2f。
- double:8 个字节。
- 有的小数在底层的存储不能做到准确存储,十进制浮点数不能准确的化为二进制数,例如 0.3 在存储过程中转化为二进制后就变成了 0.30000000000001。
- 布尔型(逻辑)类型:boolean,值只能用 true/false 赋值,Java 中的逻辑表示为 true/false,不能用 0 或者非 0 表示,逻辑运算后的值也只能是 true/false。
- char 类型:2 个字节,只能表示一个字符,一个字符用 '',字符串用 "" 与 C 一致。计算机无法直接存储字符,将字符转化成对应的十进制编码,再以二进制存储在计算机中,Java 用的 Unicode 编码表,其中包含了 ASCII 编码,Java 底层采用 Unicode 编码存储数据,char 类型可以进行计算操作,可以看成整数。
- 整形变量:byte、short、int、long。
- 引用数据类型:牵扯到面向对象,Java 中有一个 String 的类,来表示字符串(先可以看成数据类型)。
三、数据类型转化
-
默认转化:小容量 -----> 大容量,例如 byte a = 10; int b = a; 不会报错直接转化,不用像 C 语言需要强制转化。
- 强制转化:大容量 -----> 小容量,强制转化与 C 一致,long a = 10; int b = (int)a; 但字面常量不能超过最大容量,使用的时候注意可能出现的问题:
- 溢出,因为数据类型本身的字节大小。
- 精度降低(浮点转为整数丧失了小数部分)。
- 大小关系:byte、char、short -> int -> long -> float -> double,long/int 小于 float,浮点数在内存中不是简单表示大小按照特定要求分配的内存。
- 不同的数据类型相加最终的结果是容量最大的数据类型,输出时与字符串相加会变成字符串类型,运算符优先级不变。
四、运算符
- 计算运算符:计算时会隐式类型转换,例如 short a = 10; a = a + 10; 报错,a += 10; 等价于 a = (short)(a + 10);。
- 逻辑与 / 逻辑或:&&、&、||、|,区别:&、| 不会出现短路现象,&&(也叫短路与)、||(也叫短路或)会出现短路现象,短路现象:如果逻辑值已经确定,右边的表达式不执行,例如 false && a++ > b,a 没有加一。
- 逻辑异或:^,逻辑值相同返回 false,逻辑值不同返回 true。
- 三目运算符:条件运算符,结果 = (表达式)? 结果一:结果二;如果表达式 == true 返回结果一,否则返回结果二,接收结果的变量必须和返回值数据类型一致,一定有返回值。
- 位运算符:是对整数的二进制位进行运算,正数移动后,符号位补 0,负数移动后,符号位补 1(>>,<<)。
- >>:二进制比特位向左移动,后位空缺补 0。
- <<:二进制比特位向右移动,前位空缺补 0。
- >>>:左移,无论正负数,符号位都补 0。
- &、|:当左右两边是整数时,是位运算,& 只有 1&1 时才是 1,| 只有 0|0 才是 0,^(异或) 相同为 0,不同为 1,计算机存储时,都用的是补码存储的。
五、控制台输入
定义:Scanner scanner(自主命名) = new Scanner(System.in);// 创建一个实例,使用:变量 = scanner.next ();
六、方法
- 定义:与其他语言中的函数类似,方法是解决一类问题的组合,表示一种功能和行为,将完成某个功能的一段代码封装到有名称的代码块当中,方法不能独立存在要定义在类里面。
- 定义格式:[访问权限修饰符][修饰符]返回值类型 方法名(参数){ [return 方法值]; }。
- 调用:类名。方法名。
-
方法重载:方法名相同,参数不同(顺序、个数、类型)的多个方法,称为方法的重载,方法重载跟方法的返回值类型没有任何关系。
七、数组
- 是一个容器,可以存储一组相同数据类型的数据(是一种引用数据类型,是一个对象),数组中既可以存储基本数据类型,也可以存储引用数组类型。
- 数组在创建时必须给定一个长度,在创建后长度不可改变。
- 声明和创建:
- 声明:int [] 数组名; 或 int 数组名[];,例如 int a[] = new int[5];// 在面向对象的语言中都需要创建一个实例,可以看成 C 中的 malloc,在内存中创建了 5 个 int 空间的区域。
- 创建 int 数组后会自动赋默认值 0;创建 String(引用数据类型)数组后会自动赋默认值 null;创建浮点数类型数组后会默认赋值 0.0。
- 遍历(增强版 for 循环):例如 for(int 变量名:数组名){ System.out.print(tmp); },变量就是用来接收从数组中取出来的元素,数组名就是需要遍历的数组,转义字符 \t 解决格式问题。
八、面向对象和面向过程
- 面向过程:核心是将实现功能的过程也就是实现的步骤,封装为函数,在每一步执行时,调用对应的函数即可,以函数为单位进行代码组织的。
- 面向对象:是一种编程风格,是一种程序设计的思想,解决问题是以类为单位进行组织的,将同一类事物的属性和行为封装到一个类中,面向对象可以解决一类问题,找对应的类,类与类之间还可以存在继承关系,使得代码的扩展性更好,维护性更好。
- 面向对象是一种宏观的设计思想分析出完成这件事情需要哪些类,面向过程是一种微观具体的设计思想,是具体落地实现,程序设计时,两种思想都要用到。
九、类和对象
- 在 Java 中要使用一个类必须创建实例,因为如果每次使用时不创建,那么类和静态变量无区别,定义了一个类相当于定义了一个复杂的数据类型和多个方法的集合。
- 类中包含变量与方法,类是一类事物的行为(方法)和特征(变量)的集合;对象是类中具体的一个个体,是类中的实例,面向对象注重交互性,面向对象和面向过程是一种思维。
- 类是参考现实生活中的事物,将现实生活中的事物的特征和行为提取出来,是抽象的是概念上的定义;对象是实际存在的,是类中的个体,对象是以类为模版,在内存中创建的一个实例。
- 每

最低0.47元/天 解锁文章
553

被折叠的 条评论
为什么被折叠?



