Skip to content

学习编程知识

编程中的关键字是指什么意思?

定义:被编程语言赋予了特殊含义,用做专门用途的字符串(或单词)。

比如 Java 的关键字有 class、public、static、void 等,JavaScript 有 const、let 等。

关键字的特点:都是小写。其中 Java 关键字可以在这个地址里查看。

关于 Java 的关键字

Java 的关键字一共 50 个,其中 const 和 goto 是保留字(reserved word)。

true,false,null 不属于关键字,它们看起来像关键字,其实是字面量,表示特殊的布尔值和空值。

编程中的标识符(identifier)

编程中变量、方法、类等要素命名时使用的字符序列,称为标识符。

比较容易理解的说法:凡是自己可以起名字的地方都叫标识符。

标识符的命名规则(必须遵守的硬性规定):

  • 由 26 个英文字母大小写,0-9,_或 $ 组成
  • 不可以以数字开头
  • 不可以使用关键字和保留字,但能包含关键字和保留字
  • 严格区分大小写,长度无限制
  • 标识符不能包含空格

Java 中的变量

  • 表示内存中的一个存储区域,该区域的数据可以在同一类型范围内不断变化
  • 变量的构成包含三个要素:数据类型、变量名、存储的值
  • 变量声明的格式:数据类型 变量名 = 变量值
  • 变量的作用:用于在内存中保存数据。

使用 Java 变量需要注意:

  • Java 中每个变量必须先声明,后使用。
  • 变量的作用域定义在的一对花括号{ }内。
  • 变量只有在其作用域内才有效。出了作用域,变量不可以再被调用。
  • 同一个作用域内,不能定义重名的变量。

Java 中变量的数据类型

Java 中变量的数据类型分为两大类:

  • 基本数据类型:包括整数类型、浮点数类型、字符类型、布尔类型(共有 8 种)。
  • 引用数据类型:包括数组、类、接口、枚举、注解、记录、字符串。

Java 中变量的使用

步骤 1:变量的声明

格式:数据类型 变量名;

例如:

// 存储一个整数类型的年龄
int age; 

// 存储一个小数类型的体重
double weight;

// 存储一个单字符类型的性别 
char gender;

// 存储一个布尔类型的婚姻状态
boolean marry;

// 存储一个字符串类型的姓名
String name;

// 声明多个同类型的变量
int a,b,c; // 表示 a,b,c 三个变量都是 int 类型。

注意:变量的数据类型可以是基本数据类型,也可以是引用数据类型。

步骤 2:变量的赋值

给变量赋值,就是把“值”存到该变量代表的内存空间中。同时,给变量赋的值类型必须与变量声明的类型一致或兼容。

变量赋值的语法格式:

变量名 = 值;

举例 1:可以使用合适类型的常量值给已经声明的变量赋值

age = 18;
weight = 109;
gender = '女';

举例 2:可以使用其他变量或者表达式给变量赋值

int m = 1;
int n = m;
        
int x = 1;
int y = 2;
int z = 2 * x + y;

变量可以反复赋值

// 先声明,后初始化
char gender;
gender = '女';

// 给变量重新赋值,修改 gender 变量的值
gender = '男';
System.out.println("gender = " + gender);//gender = 男

也可以将变量的声明和赋值一并执行

boolean isBeauty = true;
String name = "迪丽热巴";

计算机的存储单位

  • 字节(Byte):计算机用于计量存储容量的基本单位,一个字节等于 8 bit。
  • 位(bit):是数据存储的最小单位。二进制数系统中,每个 0 或 1 就是一个位,叫做 bit(比特),其中 8 bit 就称为一个字节(Byte)。

Java 的基本数据类型介绍

整数类型:byte、short、int、long

Java 各整数类型有固定的表数范围和字段长度,不受具体操作系统的影响,以保证 Java 程序的可移植性。

  • 定义 long 类型的变量,赋值时需要以字母 "l "或 "L" 作为后缀,定义其它类型的变量不作类似要求。
  • Java 程序中变量通常声明为 int 型,除非不足以表示较大的数,才使用 long。
  • Java 的整型常量(整型字面量)默认为 int 型。(换句话说,字面量也是有类型的)

整数类型的占用存储空间与表数范围:

存储空间的每个 bit 位并不都是用来表示整数数据的大小。第一位表示整数的正负,其余位才用来表示整数的大小。

类型占用存储空间表数范围解释
byte1 字节=8bit 位-128 ~ 127如果 8 位全部用来表示数据大小,那么最大能表示的数是 27=128。
但实际能用来表数的位数只有 7 位,所以最大能表示的数是 271=127。然后能表示的数范围就是 -127 ~ 127。
但其中零有两种表示方法,+0 和 -0,于是规定 -0 表示的数是 (271)1=27=-128。
所以最终 1 字节能表示的数子范围就是 27 ~ 271 即(-128 ~ 127)
short2 字节215 ~ 21512n ~ 2n1,(n === <>81
int4 字节231 ~ 2311(约 21 亿)2n ~ 2n1,(n === <>81
long8 字节263 ~ 26312n ~ 2n1,(n === <>81

记忆区分 byte、bit

  • 看单词长度,因为 byte 比 bit 多一个字母,所以 byte 的存储空间比 bit 大。

  • 字节跳动公司的英文名叫 ByteDance,byte 是字节的意思,而 bit 是比特的意思,bit 是计算机最小的存储单元。

计算机底层如何存储数据

计算机世界中只有二进制,所以计算机中存储和运算的所有数据都要转为二进制。包括数字、字符、图片、声音、视频等。

世界上有 10 种人,认识和不认识二进制的。

进制的分类

  • 十进制(decimal)

    • 数字组成:0-9
    • 进位规则:满十进一
  • 二进制(binary)

    • 数字组成:0-1
    • 进位规则:满二进一,以 0b0B 开头
  • 八进制(octal):很少使用

    • 数字组成:0-7
    • 进位规则:满八进一,以数字 0 开头表示
  • 十六进制

    • 数字组成:0-9,a-f
    • 进位规则:满十六进一,以 0x0X 开头表示。此处的 a-f 不区分大小写

代码演示:

java
class BinaryTest {
	public static void main(String[] args) {
		
		int num1 = 123;		//十进制
		int num2 = 0b101;	//二进制
		int num3 = 0127;	//八进制
		int num4 = 0x12aF;	//十六进制

		System.out.println(num1);
		System.out.println(num2);
		System.out.println(num3);
		System.out.println(num4);

	}
}

进制的换算举例

十进制二进制八进制十六进制
0000
1111
21022
31133
410044
510155
611066
711177
81000108
91001119
10101012a 或 A
11101113b 或 B
12110014c 或 C
13110115d 或 D
14111016e 或 E
15111117f 或 F
16100002010

二进制的由来

二进制,是计算技术中广泛采用的一种数制,由德国数理哲学大师莱布尼茨于 1679 年发明。

二进制数据是用 0 和 1 两个数码来表示的数。它的基数为 2,进位规则是“逢二进一”。

二进制广泛应用于我们生活的方方面面。比如,广泛使用的摩尔斯电码(Morse Code),它由两种基本信号组成:短促的点信号“·”,读“”;保持一定时间的长信号“”,读“”。然后,组成了 26 个字母,从而拼写出相应的单词。

二进制转十进制

二进制如何表示整数?

  • 计算机数据的存储使用二进制补码形式存储,并且最高位是符号位

    • 正数:最高位是 0
    • 负数:最高位是 1
  • 规定

    • 正数的补码与反码、原码一样,称为三码合一
    • 负数的补码与反码、原码不一样:
      • 负数的原码:把十进制转为二进制,然后最高位设置为 1
      • 负数的反码:在原码的基础上,最高位不变,其余位取反(0 变 1,1 变 0)
      • 负数的补码:反码 +1

二进制转十进制:权相加法

20+21+...+2n

一个字节可以存储的整数范围是多少?

java
0000 0000
// 最大
0111 1111 // 2^7-1 === 128-1 === 127
java
//1 个字节:8 位

0000 0001  ~  0111 111 ==> 1~127

1000 0001 ~ 1111 1111 ==> -127 ~ -1

// 有两种表现形式
0000 0000 ==>0

1000 0000 ==> -128(特殊规定)=-127-1

十进制转二进制

十进制转二进制:除 2 取余的逆

二进制与八进制、十六进制间的转换

二进制转八进制

二进制转十六进制

八进制、十六进制转二进制

各进制间的转换

练习:

1.将以下十进制数转换为十六进制和二进制
123  256  87  62


2.将以下十六进制数转换为十进制和二进制
0x123   0x25F  0x38  0x62

计算取余数的正负符号问题

结论:结果的符号与被模数符号相同

java
public class ArithmeticTest1 {
	public static void main(String[] args) {
    // 结果与被模数符号相同
    System.out.println(5 % 2); // 1
		System.out.println(5 % -2); // 1
		System.out.println(-5 % 2); // -1
		System.out.println(-5 % -2);//-1		
		// 商 * 除数 + 余数 = 被除数
		// 5 % -2  ==> 商是 -2,余数时 1    (-2) * (-2) + 1 = 5
		// -5 % 2  ==> 商是 -2,余数是 -1   (-2) * 2 + (-1) = -4 - 1 = -5
	} 
}

Released under the MIT License.