第二章 基本数据与计算

上一期我们讲到了计算机硬件概述,软件概述,编程语言概述,关于java的基本概念,以及如何配置和运行java,这一期我们就来学习java语言中的基本数据。

2.1 java中的关键字

Java关键字是电脑语言里事先定义的,有特别意义的标识符,有时又叫保留字,还有特别意义的变量。Java的关键字对Java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等,关键字不能用作变量名、方法名、类名、包名和参数。简单的概述一下就是,一些被高级语言(比如java)赋予了特殊含义的单词,不能随意的使用。一般为纯小写单词。

例如上一期的代码中:

public class A{ 
	public static void main (String[] args){
		System.out.print("你是宇宙无敌最可爱");}
	
}

其中class是关键字,表示的一个类,不能用做类名(A)

在这里插入图片描述
类名为class时,程序报错。

public 公共的;Java语言的一个关键字,在方法和变量的声明中使用,它表示这个方法或变量能够被其它类中的元素访问,是函数的权限。

void 空的;Java语言的关键字,用在Java语言的方法声明中说明这个方法没有任何返回值,表示的是函数的返回值类型。"void"也可以用来表示一句没有任何功能的语句。

System,String与A是一个东西,是类名而非关键字,但是也不是随意使用。

2.2 标识符

在这里插入图片描述
就是我们程序员在写代码的过程中自定义的一些名称,例如变量名,类名以及函数名
在程序设计术语中,这样的名字称为标识符(identifier)。所有的标识符必须遵从以下规则:

  • 标识符是由字母、数字、 下划线(-) 和美元符号($) 构成的字符序列。
  • 标识符必须以字母、下划线(_)或美元符号($)开头,不能以数字开头。
  • 标识符不能是关键字。
  • 标识符不能是 true、false 或 null。
  • 标识符可以为任意长度。

例如,$2、ComputeArea、area、radius 和 print 都是合法的标识符,而 2A 和 d+4 都是非法的,因为它们不符合标识符的命名规则。Java 编译器会检测出非法标识符,并且报语法错误。
注意:由于 Java 是区分大小写的,所以 area、Area 和 AREA 都是不同的标识符。
知道了标识符的含义和规则,那么标识符如何组成呢?
👇
标识符的组成规范:
在这里插入图片描述

2.3 注释

每个人都有每个人的思想,思想不同写出来的东西也不同,同理,程序员也是一样,每个程序员的思想不同,写出来的程序也就不同,为了方便程序员之间的代码交流,此时就需要注释,还有就是在代码写的过多的情况下,程序员容易忘记,此时便可以提示程序员。
值得注意的是,注释本身不属于代码范畴的,注释不会进字节码文件。
注释本身分为三类:

  1. 单行注释——//直到换行为止 都是注释的内容(单行里可以套用多行)
  2. 多行注释——以 /* 开始 , 以 */结束(多行里可以套用单行)
  3. 文档注释——以 /** 开始 , 以 */结束(多行不能套用多行)
public class Test {
	/**
 	* 这是文档注释
 	*/
	public static void main(String[] args) {
	
	}
}

2.4 常量与进制

2.4.1常量

常量本身是一些不能被改变含义的数据,数据在程序里面进行运算时不能发生改变的数据,成为常量。
Java直接出现在程序中的量,同时被称为字面量。

1.字符串常量:凡是用双引号引起来的部分,叫做字符串常量。例如:“abc”、“Hello”、“123”。
2.整数常量:直接写上数字,没有小数点。例如:100,200,0,-250。
3.浮点数常量:直接写上的数字,有小数点。例如:2.5、-3.14、0.0。
4.字符常量:凡是用单引号引起来的单个字符,就是字符常量。例如:‘A’、‘b’、‘9’、‘中’。
5.布尔常量:只有两种取值。true、false。
6.空常量:null。代表没有任何数据。

注意:

1.两个单引号中间必须有且仅有一个字符,没有不行。
2.两个单引号中间必须有且仅有一个字符,有两个不行。
3.空常量不能直接用来输出输出。

例如:System.out.println(’’);这是错误的。
例如:Syetem.out.println(‘AB’);这是错误的。
例如:System.out.println(nulll);这是错误的。

2.4.2进制

什么是进制?
进制也就是进位制,是人们规定的一种进位方法。 对于任何一种进制—X进制,就表示某一位置上的数运算时是逢X进一位。
十进制是逢十进一, 十六进制是逢十六进一, 二进制就是逢二进一,以此类推,x进制就是逢x进位。

二进制的表达形式:以0b/0B开头,其余是有0、1组成;
八进制的表达形式:以0开头,其余是有0-7组成;
十六进制的表达形式:以0x/0X开头,其余是有0-9、a、b、c、d、e、f组成;

进制之间的相互转换

二进制转十进制
例如一个二进制数:100
从最右边的一位算起,为 2^0
中间的一位为2^1
最左边的一位数为2^2,
由此可知二进制数100转换为十进制数为:02的0次方+02的1次方+02的二次方,结果为4
同理,1000 0100的十进制数为:1
2的二次方+1*2的七次方,结果为132

十进制转二进制
例如:十进制60,如何转换为2进制?
在这里插入图片描述
此方法称为短除法,将所得数由下往上排列,结果为0111100

二进制转八进制

二进制中每一有两个状态,八进制中每个位有八个状态,所以我们可以通过3个二进制位表示八进制位(2^3=8)

这里涉及8421码
什么是8421码?
在这种编码方式中每一位二值代码的1都是代表一个固定数值,把每一位的1代表的十进制数加起来,得到的结果就是它所代表的十进制数码。
由于代码中从左到右每一位的0分别表示8,4,2,1,所以把这种代码叫做8421代码。每一位的1代表的十进制数称为这一位的权。
8421码中的每一位的权是固定不变的。
二进制转换为十进制:一位一组;
二进制转换为八进制:三位一组;
二进制转换为十六进制:四位一组;
最后进行组合即可

例如:二进制数10010100
拆分(从右往前拆)为3个二进制码,为 010 010 100
由于八进制中最大为7,则用8421码中的421
0 1 0 0 1 0 1 0 0
4 2 1 4 2 1 4 2 1
取“1”对应的码,则二进制数10010100的八进制表示为0224。

同理,二进制转16进制也是一样,用8421全码
例如:二进制数10010100
拆分为4个二进制码,为 1001 0100
1001 0100
8421 8421
取“1”对应的码,则二进制数10010100的十六进制表示为0x94。
例:二进制数111111010111转换为十六进制。
同上:拆分为4个二进制码,为 1111 1101 0111
1111 1101 0111
8421 8421 8421
取“1”对应的码,则二进制数111111010111的十六进制表示为0xfd7。

2.5 变量

在程序运行期间同,随时可能产生一些临时数据,应用程序会将这些数据保存在一些内存单元中,每个内存单元都用一个标识符来标识,这些内存单元称为变量,定义的标识符就是变量名,内存单元中存储的数据就是变量的值,变量的值在程序运行期间可以被改变。
变量的出现,解决了重复性数据更迭问题。

// 方法1
数据类型 变量名 = 变量值;
// 方法2
数据类型 变量名;
变量名 = 变量值;
// 例:
int num = 20;

进程:正在进行的程序。程序在被加载进内存当中时,会被分配空间,空间就是变量本身。
变量的本质:就是在内存当中某一个进程里的一个临时存储区域。
每一个变量空间在创建的时候都会被随机的分配地址(真实的物理内存地址)
在这里插入图片描述变量空间中的数据在变化的过程中必须保持是可兼容的(至少是同一类型)
如果直接在代码中用变量的物理地址去访问空间中的数据的话 有可能访问不到,为了避免地址的不确定性,引入了变量名这个概念 由变量名-地址表 来保证变量名和变量之间的关系(底层实现)
常量数据一定是在变量空间当中吗?不是,所有的常量都在常量池(存放程序当中直接出现的数据)当中,变量空间当中存的就是常量在常量池中的地址。
在这里插入图片描述其实 ,上述当中变量空间的地址 其实就是你们在C语言当中学的指针
我们C语言当中学习的指针,说白了其实也就是变量空间的地址。打个比方,有一本书,书上有一张便利贴,便利贴上面记录了书的某一页的页码和行号,这张便利贴其实就可以当作一个指针,我们通过访问便利贴上面的页码和行号,就可以具体的访问到书中的那一页那一行的文字
简单举个例子,int* a 这里面的*表示指针变量,a表示指针变量名,int表示这个指针是一个整型的指针。这如果还不明白的话,下面我用一串代码来更加具体的说一下。

#include<stdio.h>
int main(){
    int a=3;    //创建一个名称为a的普通变量,这个变量里面存放数据3
    int b=4;    //创建一个名称为b的普通变量,这个变量里面存放数据4
    int* c;     //创建一个指针变量c,这个指针变量c指向普通变量b
    c=&b;       //这句话的意思是将变量b的地址赋予指针变量c
    int** d;    //创建一个指向指针变量c的指针变量d
    d=&c;
    printf("a的值=%d\n",a);//直接输出a的值,结果为3
    printf("b的值=%d\n",b);//直接输出b的值,结果为4
    printf("a的地址=%d\n",&a);//&是取地址符号,这里输出a的地址
    printf("b的地址=%d\n",&b);//输出b的地址
    printf("c的地址=%d\n",&c);//输出c的地址
    printf("d的地址=%d\n",&d);//输出d的地址
    printf("c的值=%d\n",c); //c是一个指针变量,存放的是b的地址,所以这里输出的是c所指向变量的地址,即b的地址
    printf("*c的结果=%d\n",*c);//c本身存放的是b的地址,*c根据b的地址去找b,结果为4
    printf("d的值=%d\n",d);//d里面存放的是c的地址,这里输出c的地址
    printf("*d的结果=%d\n",*d); //d里面存放的是c的地址,*d就是根据c的地址去找c,而c里面存放的是b的地址,所以这里输出b的地址
    printf("**d的结果=%d\n",**d); //同上,*d表示b的地址,**d就是根据b的地址去找b,这里输出的是b的值,结果为4
    printf("%d\n",*&a);//&a是取a的地址,*&a就是根据a的地址去找a,结果为3
    printf("%d\n",&**d);//同上,*d就是c,*c就是b,&b就是取b的地址
    printf("%d\n",*&**&d); //&d是取d的地址,*&d就是d里面存放的c的地址,相当于d,*&*d,*d根据c的地址寻找c,*&c,&c就是取c的地址,*&c就是c指向的b的地址。

程序过程如图所示
在这里插入图片描述

2.6 数据类型

每个数据类型都有它的取值范围。编译器会根据每个变量或常量的数据类型为其分配内存空间。Java 为数值、字符值和布尔值数据提供了八种基本数据类型。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值