Java 入门之4:Java中的数据类型,标识符,关键字,变量和常量的总结

目录

标识符:

标识符的定义规则:

 

关键字:

变量和常量:

常量:

变量:

数据类型:

Java数据类型.xmind:

Java八种基本数据类型.xmind

整数类型:

浮点数类型:

字符类型:

ASCII码表:ASCII(American Standard Code for Information Interchange)美国信息交换标准码

布尔类型:

计算机中的存储单位:


标识符:

概念:

标识符在Java中指的就是 包,类,变量,常量,方法,形参,实参,对象名,枚举……等等, 这些需要定义名字的地方,那么那个名字就是标识符(只是字面上的含义,没有什么特殊意义)。

标识符的定义规则:

  1. 可以由 字母,数字,下划线 _ ,美元符号 $ 组成 (ps: 字母的概念比较宽泛,包括了英文字母,汉字,日语,俄语,韩语…… ,虽然可以用汉字命名,但不建议!一般起名都是尽量要使用英文字母来命名)
  2. 不可以以数字开头,不可以使用java中的关键字!
  3. 尽量做到见名知意: 提高代码可读性
  4. 大小写敏感: int a;int A;
  5. 长度没有限制: 但是不建议太长(容易把自己和别人搞懵逼)
  6. 遵照驼峰命名法:
    1. 具体规则:
      1. 类名: 首字母大写,其他遵循驼峰命名(这称之为大驼峰命名法)
      2. 方法名,变量名,形参名,实参名,对象名:首字母小写,其余遵循驼峰命名(这称之为小驼峰命名法)
      3. 常量名,枚举名:单词全部大写,单词与单词之间使用下划线 _ 隔开。(这是约定俗成的规则,可以理解为全驼峰命名法)
      4. 包名: 单词全部小写,不需要遵循驼峰命名
        1. (包名的定义规则):
          1.  indi :

                     个体项目,指个人发起,但非自己独自完成的项目,可公开或私有项目,copyright主要属于发起者。

                     包名为“indi.发起者名.项目名.模块名.……”。

          2. pers :

                     个人项目,指个人发起,独自完成,可分享的项目,copyright主要属于个人。

                     包名为“pers.个人名.项目名.模块名.……”。

          3. priv :

                     私有项目,指个人发起,独自完成,非公开的私人使用的项目,copyright属于个人。

                     包名为“priv.个人名.项目名.模块名.……”。

             

          4. onem :

                     与“indi”相同,推荐使用“indi”。

            1. 另外,我为了区分团队项目和前面所说项目的区分,还有了一下扩展:

              1.  team :

                         团队项目,指由团队发起,并由该团队开发的项目,copyright属于该团队所有。

                         包名为“team.团队名.项目名.模块名.……”。

              2. com | cn | org …… :

                  公司项目,copyright由项目发起的公司所有。

                         包名为“com.公司名.项目名.模块名.……”。

                 

                有“individual、personal、private、one-man”,进一步对以上4个单词词意的分析,
                 并在保证了唯一性,使用每个单词的前4个字母作为前缀,正好

      5. (项目名 | 模块名):单词全部小写,单词与单词之间使用连字符 - 隔开,规则参照的是Spring框架的命名格式,(当然也可以使用下划线隔开 _ )

 

 


关键字:

概念:

关键字是Java语言中一些被赋予了特定意义的一些单词,用作专门用途的单词,对Java 的编译器有特殊的意义,不可以用它当做标识符来使用,不能自行定义!

特点:

  • Java中的所有的关键字的单词都为小写
  • 关键字在Notepad++,IDE智能集成开发环境(比如:常用的 Intellij IDEA , Eclipse ,MyEclipse)中会有高亮显示,清晰辨识度高

   关键字的作用:(后续专门写一篇 关键字的作用,以及细节做补充) 第一篇:优秀的阐述了关键字的作用的 其他博主的博文,值得学习第二篇:灰常的不错的 其他博主的博文  值得学习 ∠(°ゝ°)


变量和常量:

常量:

概念:

  • 常量通常指的是一个固定的值,比如:1、2 、 3.14、6.6、'a'、'A'、'0'、true、false、"HelloWorld" ……
  • 在Java语言中,主要是使用关键字final来定义一个常量,常量一旦被初始化后就不能在更改它的值,(除非修改初始化的常量它本身)
  • 逻辑常量就只有两个取值:true、false (true,false不属于Java中的关键字,是属于Java中的boolean类型的常量值!)

常量分为两种:

  1. 第一种常量:字面常量(本身就自然存在的值)
    1. 字面常量的类型:
      1. 整型常量(byte,short,int,long):1、2 ……
      2. 浮点型常量(float,double):3.1415926、6.6666 ……
      3. 字符常量(char):'A'、'a' ……
      4. boolean常量(boolean):true、false (true,false不属于Java中的关键字,是属于Java中的boolean类型的常量值!)
      5. 字符串常量(String):"HelloWorld"
  2. 第二种常量: 字符常量(被final修饰的变量既是 字符常量,就是接收那个 (常量值)|(对象) 的变量称之为常量!因为它不能被再次赋值!只能被初始化赋值一次!)
    1. 格式: final 数据类型 常量名 = 常量值;
      1. 特点:
        1. 使用fianl关键字修饰的常量称之为字符常量
          1. 比如:
          2. final int CONSTANTS_INT = 666;
          3. final double CONSTANTS_DOUBLE = 3.1415926;
          4. final char COASTANTS_CHAR = '中';
          5. final String CONSTANTS_STRING = "China牛逼";
          6. final List<String> STR_LIST = new ArrayList<>();
          7. ……

 

变量:

概念:

变量本质上就是表示一个 “可操作的存储空间”,空间的位置是确定的,但是里面放置什么样的值是不确定的,可以通过变量名来访问“对应的存储空间”,从而通过操作变量操作这个“存储空间” 存储的值,Java是一种强类型的语言,每个变量都必须声明数据类型,变量的数据类型决定了变量占据存储空间的大小, 比如 , int a = 6; ,那么a变量的空间大小就是为4个字节(32 bit),变量作为程序中最基本的存储单元,它的要素包括了变量名,变量类型和作用域,变量在使用前必须对其声明,只有在变量声明以后,才能为它分配相应长度的存储空间 。

变量的声明格式:

第一种:声明并初始化值。

DataType variableName = initializationValue;

数据类型 变量名 = 初始值 [,变量名=[初始值]……] ;  [] 表示可选项,就是可有可无

或者

第二种:先声明,后初始化值。

数据类型 变量名;

变量名 = 初始值;

 

Notice:

1: 可以在同一行 声明多个变量,中间用英文的逗号 , 隔开,英文的分号 ; 结尾 。(前提是它们的数据类型必须是一样的!)比如: int a = 20,b = 30,c = 40;

或者

int a,b,c;

a = 20;

b = 30;

c = 40;

2: 方法(静态方法,实例方法),代码块(静态代码块,实例代码块)中的变量不管是直接声明并且初始化值,还是先声明,再初始化值,都是要初始化值的!否则会报错!编译不通过!

3: 成员变量(实例成员变量,静态成员变量)可以先声明变量,不初始化值,如果在调用成员变量(实例成员变量,静态成员变量)的时候,并没有通过构造器或者set方法给成员变量传入具体的值的话,此时,Java的编译器会根据成员变量的数据类型初始化默认值!(这一步在进入构造器之前就已经初始化默认值完成),那么此时使用的将是成员变量的数据类型的默认值!

  1. byte,short,int 的Java的编译器初始化默认值是 0!,long的Java的编译器初始化默认值是0L;
  2. float的Java的编译器初始化默认值是 0.0F !,double 的Java的编译器初始化默认值是0.0D;
  3. char 的Java的编译器初始化默认值是  空字符 !(nothing)
  4. boolean的Java的编译器初始化默认值是  false !
  5. 引用类型的Java的编译器初始化默认值是  null !

 

基本数据类型对应的包装类型(包装类型就是基本数据类型的引用数据类型,因此它们的默认值就是null!)

byte => Byte

short => Short

int => Integer

long => Long

float => Float

double => Double

char => Character

boolean => Boolean


 

数据类型:

数据的官方概念

数据类型的官方概念:

数据的简单理解:

简单理解就是 事实或者观察的结果,是对客观事务的逻辑归纳,是用于表示客观事物的未经加工的原始素材,数据可以是连续的值,比如声音、图像、称之为模拟数据;也可以是离散的,比如符号,文字称为数字数据,在计算机中,数据是指所有能输入计算机并被计算机程序处理的符号的介质的总称,是用于输入电子计算机进行处理,具有一定意义的数字,字母,符号和模拟量等的统称,计算机存储和处理的对象十分广泛,表示这些对象的数据也随之变得越来越复杂,在计算机中,数据以二进制信息单元0,1的形式表示!

数据类型的简单理解:

简单理解就是对数据的分门别类的分类,数据类型的名字就是对它分类的数据进行命名,这只是字面上的含义,没有什么特殊意义,抽象的来说:数据类型只是为了达到一定程度上的辨识度以及数据所需要的存储空间的表示,在各大编程语言中,可能相同的数据会有不同的数据类型来表示,某种编程语言具体的数据类型定义这只是取决于某种编程语言它的官方定义!并没有特定的规范!比如 Ruby 语言中没有 float 和 double 这两种数据类型,它都是用Float类来表示浮点数,每个浮点数都是Float类的对象 ……,又比如 Go 语言中没有byte,short,long这三种数据类型,它是用int8,int16,int32,int64来表示整数数据 …… ,再比如 C/ C++ 语言中没有 byte这个数据类型 ……,JavaScript 这种弱类型语言中没有给数据划分具体的数据类型, 它都是是用 var 关键字  或者 let关键字(ES6后引入的)或者 const 关键字来声明变量从而表示存储数据 …… 。

各大编程语言定义数据类型的好处在于可以在不同的时机使用不同的数据类型来存储数据,从而来达到 节省内存空间的目的 !数据类型不同,这个数据类型所占用的内存空间也就不同,占用的字节大小也就不一同!能存储能表示的范围也就不一同!


Java数据类型.xmind:


Java八种基本数据类型.xmind


整数类型:

byte,short,int,long

Notice:  可以使用二进制,八进制,十进制,十六进制表示整数常量

  1. 整数默认为int类型,使用long类型时整数最后必须加L或者l 表示 , 例: long a = 2021L; 或者 long a = 2021l;
  2. 整数常量书写格式:  例: int a = 1949; 或者 int a = +1949; int a = -1949;

计算机中的常用进制的相互转换


浮点数类型:

float: 单精度浮点数,尾数可以精确到6 ~ 7位有效数字,在某些情况下,float类型的精度很难满足需求

double: 双精度浮点数, 尾数可以精确到15 ~ 16 位有效数字,精度是float的两倍+;绝大部分应用程序都采用double类型

浮点数是怎么存储的 请看我的另一篇博文,内容有点多,选择性的看 Java中的float和double类型的浮点数是怎么按照IEEE 754标准存储的?

Notice: 可以使用二进制,八进制,十进制,十六进制表示浮点数常量

  1. 浮点数默认为double类型,使用float类型是浮点数最后必须加F或者f表示 , 使用double时[加D或者d] 可选
  2. 浮点数float类型常量书写格式:
    1. 十进制形式: 例: float a = 3.14F; 或者 float a = -0.0314f; [double a = 3.14D;或者 double a = -31400.0d;]
    2. 科学计数法形式: float a = 314E-2; 或者 float a = -3.14E-2; double a = 314e-2; 或者 double a = -314e+2;
  3. 不要拿float类型和double类型的相同的数来比较,它们的占用字节大小不一样,它们是不相等的,这和它们底层的存储规则有关,它们底层存储的规则不一样,所表示的精度不一样,所表示的浮点数也就不一样 。
    1. 例:

字符类型:

char

Notice:

  1. Java中使用单引号来表示字符常量,字符类型在内存中占两个字节,char类型用来表示在Unicode编码表中的字符,Unicode编码被设计是用来处理各种语言的字符集
  2. 字符包括了转义字符 转义字符官方概念
    1. 转义字符概念:
      1. 所有的ASCII码都可以用“\”加数字(一般是8进制数字 比如大于 > '\076',(也可以使用Unicode码来表示(Unicode码采用的是十六进制数字,比如大于 > '\u003E'))来表示。而C、Java 中定义了一些字母前加"\"来表示常见的那些不能显示的ASCII字符,如\0,\t,\n等,就称为转义字符,因为后面的字符,都不是它本来的ASCII字符意思了。
      2. 控制字符官方概念
        1. Notice: 转义字符不属于控制字符;控制字符也不属于转义字符。如果控制字符的定义是非图形的字符,或者对输出设备(打印机、文本终端)有特殊意义的字符,那么针对这些设备的转义字符也是控制字符。但是程序设计用的转义字符是图形字符,因此它们不是控制字符。相反地,大多数ASCII控制字符单独都具有控制功能,因此它们不是转义字符。

 关于char类型的转义字符和它的一些细节可以看我的另外一篇博文里面详细的描述了char类型的一些细节?Java中的char类型是怎么存储的以及常见的编码字符集

 

ASCII码表:ASCII(American Standard Code for Information Interchange)美国信息交换标准码

Notice: 只需记住3个字符的编码就行,(其他不常用):

  1. 新中国成立前一年 48 => 对应字符 '0'
  2. 那年香港回归 97 => 对应字符 'a'
  3. 两个6减一 65 => 对应字符 'A'

布尔类型:

boolean

Notice: boolean类型有两个常量值,true和false, 在内存中占用 1 bit(位),不是一个字节,在Java中不可以像C语言中使用 0(假) 或者 非0 比如 1 (真)来代替 true 和false !boolean类型用来判断逻辑条件,主要都是用于程序的执行流程控制,用于的流程控制包括  三元运算 ,分支结构,循环结构 。


计算机中的存储单位:

耳熟能详的计算机中存储单位,可能就是 KB、MB、GB、TB这些了。

计算机中存储单位的换算关系:(除了bit(位)到byte(字节)的换算关系是8以外,即2^{3},其他单位的换算关系都是1024,即2^{10}

1位 bit (比特)(Binary Digits):存放一位二进制数,即 0 或 1,是计算机中最小的存储单位!(但是平时生活中能见的存储单位最小的是字节(byte),KB)

计算机中存储单位,它们(从小到大排列)分别是:

8bit(位,比特)== 1B(byte,字节)

1KB(Kilobyte,千字节)== 1024B == 2^{10}B

1MB(Megabyte,千字节,又称 ”兆“)== 1024KB == 2^{20}B

1GB(Gigabyte,十亿字节,吉字节,又称 ”千兆“)== 1024MB == 2^{30}B

1TB(Trillionbyte,万亿字节,太字节)== 1024GB == 2^{40}B

1PB(Petabyte,千万亿字节,拍字节)== 1024TB == 2^{50}B

1EB(Exabyte,百亿亿字节,艾字节)== 1024PB == 2^{60}B

1ZB(Zettabyte,十万亿亿字节,泽字节)== 1024EB == 2^{70}B

1YB(Yottabyte,一亿亿亿字节,尧字节)== 1024ZB == 2^{80}B

1BB(Brontobyte,一千亿亿亿字节,珀字节)== 1024YB == 2^{90}B

1NB(Nonabyte,一百万亿亿亿字节,诺字节) == 1024 BB ==  2^{100}B

1DB(Doggabyte,十亿亿亿亿字节,刀字节) == 1024 NB ==  2^{110}B

1CB(Corydonbyte,万亿亿亿亿字节,馈字节)== 1024DB== 2^{120}B

1XB(Xerobyte,十万亿亿亿亿字节) == 1024 CB == 2^{130}B

数据到达DB这个量级是几百年之后的事情了,这时候8K视频都只能算一般画质,消费级硬盘都是以PB为单位了。2020年全球数据存量总和为44ZB。

 

带宽单位(摘自其他文章……):

许多人对 Kbps、KB、Mbps 等速度单位有所误解,以下简单解释一下所谓的 1.5M、3M、6M 如何计算。所谓 1.5M 宽带,其实是指 1.5Mbps (bits per second),亦即 1.5 x 1024 / 8 = 192KB/sec, 但这只是理论上的速度,实际上则要再扣约 12% 的 Ethernet Header, IP Header, TCP Header, ATM Header 等控制讯号,故其传输速度上限应为 169KB/sec 左右。

在传输单位的写法上,B 和 b 分别代表 Bytes 和 bits,两者的定义是不同的,具体换算公式如下:


1 Byte = 8 bits

1 Kb = 1024 bits

1 KB = 1024 bytes

1 Mb = 1024 Kb

1 MB = 1024 KB

宽带最高下载理论值

1.5 M =169 KB/s

3 M =338 KB/s

6 M =676 KB/s

10 M =1126 KB/s

这篇文章对你有帮助吗?作为一名程序工程师,在评论区留下你的困惑或你的见解,大家一起来交流吧!

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值