一、数据类型

  1、数据类型分类

    Java 的数据类型分为两大类:

      •  基本数据类型:整数、浮点数、字符型、布尔型
      • 引用数据类型(对象类型):类、数组,字符串、接口等。

  2、基本数据类型

   四类八种基本数据类型:

  

数据类型 关键字 内存占用 取值范围
字节型 byte 1个字节 -128~127
短整形 short 2个字节 -32768~32767
整形 int(默认) 4个字节 -2的31次方~2的31次方-1
长整型 long 8个字节 -2的63次方~2的63次方-1
单精度浮点型 float 4个字节 1.4013E-45~3.4028E+38
双精度浮点型 double(默认) 8个字节 4.9E-324~1.7977E+308
字符型 char 2个字节 0~65535
布尔类型 boolean 1个字节 true、false

    (1)整数类型

      整数用来存储整数数值,可以是正整数,负数,有3种表示形式:

0B101  // 二进制
-88 // 十进制
0123 //八进制必须以 0 开头
0x25 // 十六进制必须以 0X 或 0x 开头

      int类型为默认的整数类型,对于long 类型的值,在定义是在数字后加 L 或  l,表示该数值为长整型。

     (2)浮点数类型

      浮点数默认的是double类型,如果想要为float类型数据赋值,、应在后面加 F 或 f 。

     (3)字符类型(Java中使用Unicode编码来表示)   

      1、char c1 = ‘A’;

      2、char c2 = 65;

       3、char c3 = ‘\u0041’

       4、转义字符 “\” 是一种特殊的字符变量,不同的字符代表不同的意义。

         '\n'  表示换行(line)

          '\t' 表示制表符(Tab)

          '\\' 表示斜杠

          '\"' 表示双引号

          '\'' 表示单引号

          '\r' 表示回车键

         '\b' 表示删除键 BackSpace

     (4)布尔类型

      只有 true 、false 两个字值。

      :在java语言中,boolean类型不能参与运算

  Tips

    (1)Java中的默认类型:整形类型是 int、浮点类型是 double。

    (2)字符串不是基本类型,而是引用类型。

    (3)浮点型可能只是一个近似值,并非精确的值。

    (4)数据范围与字节数不一定相关,例如float数据范围比long更加广泛,但是float是4字节,long是8字节。

    (5)浮点数当中默认类型是double。如果一定要使用float类型,需要加上一个后缀F。如果是整数,默认为int类型,如果一定要使用long类型,需要加上一个后缀L。推荐使用大写字母后缀。

二、变量与常量

  1、关键字(keywords):

    是指在程序中,java 已经定义好的单词,具有特殊含义。

    Java关键字表:

int public this finally boolean abstract
continue float long short throw throws
if goto default byte do case
strictfp package super void try switch
else catch implements private final class
extends volatile while synchronized instanceof char
protected import transient default double  interface
return break for static new

  2、标识符

    是指在程序中,用来标识类名、变量名、方法名、数组名、文件名的有效字符序列。

    •  命名规则:(硬性要求)

      •   标识符可以包含 英文26个字母(区分大小写)、0-9数字、$()美元符号 和 _(下划线) 组成。
      • 标识符不能以数字开头。
      • 标识符不能是关键字(包含保留字)和特殊值。
      • 严格区分大小写,长度没有限制,但不能使用空格。
    •     命名规范:(软性建议)
      •   类名规范:首字母大写,后面的每个单词首字母大写(大驼峰式)。
      •        方法名规范:首字母小写,后面每个单词首字母大写(小驼峰式)。
      •        变量名规范:全部小写
      •        常量名规范:全部大写,每个单词之间用下划线(_)分割。
      •        包名规范:全部小写
      •        见名知意,望文生义的原则

  3、变量

    (1)在程序执行过程中,值可以被改变的量称为变量

      作用:用来存储值(数据)。在 Java 中,变量本质上,就是代表一块内存区域,变量中的数据是存储在 JVM 内存中。

    (2)变量的分类:

    

类型 含义 数据举例
整数常量 所有的整数 0,1,578,-6
小数常量 所有的小数 3.14,-0.1
字符常量 单引号引起来,只能写一个字符,必须有内容 'a',' ','中'
字符串常量 双引号引起来,可以写多个字符,也可以不写 "a","hello","中国"
布尔常量 只有两个值 true、false
空常量 只有一个值 null

    (3)变量的定义(声明变量)

      变量定义的格式包括三个要素:数据类型、变量名、数据值

      语法

(1)数据类型 变量名 = 数据值;       // 一步到位的格式,声明并赋值
(2)数据类型 变量名; // 声明一个变量,
   变量名 = 数据值; // 赋值,将右边的数据值,赋值交给左边的变量
(3)数据类型 变量名称1,变量名称2,变量名称3 = 值,变量名称4,变量名称5 =值2; //多个相同类型的变量声明并赋值

      Tips:

      (1)如果创建多个变量,那么变量之间的名称不可以重复。(在同一作用域内)

      (2)对于 float 和 long 类型来说,字母后缀 F 和 L 不要丢掉。

      (3)java 语言是强类型的编程语言,要求数据类型必须和值的类型相同

      (4)如果使用byte或者short类型的变量,那么右侧的数据值不能超过左侧类型的范围。

      (5)没有进行赋值的变量,不能直接使用;一定要赋值之后,才能使用。

      (6)变量使用不能超过作用域的范围。

        【作用域】:从定义变量的一行开始,一直到直接所属的大括号结束为止。

      (7)可以通过一个语句来创建多个变量,但是一般情况不推荐这么写。

     // 同时创建了三个全都是int类型的变量
int a, b, c;
// 各自分别赋值
a = 10;
b = 20;
c = 30;
System.out.println(a); //
System.out.println(b); //
System.out.println(c); // 30 // 同时创建三个int变量,并且同时各自赋值
int x = 100, y = 200, z = 300;
System.out.println(x); //
System.out.println(y); //
System.out.println(z); //

    (4)变量的有效范围

      变量被定义出来后只是暂存在内存中,等到程序执行到某一个点,该变量会被释放掉,也就是变量的生命周期。变量的有效方位能够访问该变量的区域,若超出该区域,则在编译的时候出现错误。根据“有效范围”可以分为以下两类:

      a. 成员变量

        在类中定义的变量称为成员变量,成员变量在整个类中都有效。成员变量又可分为两种:静态变量和实例变量。

        Demo:

 class var{
int x = 45;
static int y = 80;
}

      x 为实例变量,y 为静态变量(也称类变量)。如果在成员变量的类型前面加上关键字 static 这样的成员变量就称为 静态变量。

      静态变量的有效范围可以跨类,甚至可在整个应用程序之内。对于静态变量,除了能在定义它的类中存取,还能直接以 “类名.静态变量” 的方式在其他类内使用。

      b. 局部变量

        在类的方法体重定义的变量,方法内部定义,在 { } 之间的代码中声明的变量称为局部变量。局部变量只在当前代码块有效。

        在类的方法中声明的变量,包括方法的参数,都属于局部变量。局部变量只在当前定义的方法内有效。局部变量的生命周期取决于方法,当方法被调用时,为变量分配空间,方法调用结束后,则释放局部变量的内存空间,局部变量销毁。

      Tips:局部变量与成员变量同名时,成员变量将被隐藏。即这个成员变量在此方法中暂时失效。

  4、常量

      在程序执行过程中,值不变的量,即固定不变的量称为常量。也被称为 "final变量"。

    常量在整个程序中只能被赋值一次,在为所有的对象共享值时,常量非常有用。

    语法:

final double PI = 3.14159;       // 声明 double 型的常量PI 并赋值

三、数据类型转换

   类型转换是从一种类型更改为另一种类型的过程。如果从低精度数据类型向高精度转换,则永远不会溢出,总是成功。相反,从高精度向低精度转换,可能出现信息丢失,有可能失败。

  1、自动转换(隐式转换)

    将 取值范围小的类型 自动提升为 取值范围大的类型。

    Demo:

public static void main(String[] args) {
int i =1;
byte b = 2;
// byte x = b + 1; 报错
// int类型和 byte 类型运算,结果是 int类型
int j = b + i;
System.out.println(j);
}

    转换原理图解:

    byte 类型内存占有1个字节,在和 int 类型运算会提升为 int 类型,自动补充 3个字节,因此计算后的结果是 int  类型。

    转换规则:范围小的类型向范围大的类型提升,byte、short、char 进行算术运算时直接提升为 int 类型。

byte --> short、char --> int --> long --> float --> double

    总结:

    a、特点:代码不需要进行特殊处理,自动完成。

    b、规则:数据范围从小到大

  2、强制转换(显式转换)

    强制类型转换

数据类型 变量名 = (数据类型) 被转数据值;

    Demo:

 public static void main(String[] args){
// short 类型变量,内存中2个字节
short s = 1;
/*
出现编译失败
s 和 1做运算的时候,1是int类型,s 会被提升为 int 类型
s+1 后的结果是 int 类型,将结果在赋值 short 类型时发生错误
short 内存2个字节,int 类型4个字节
必须将 int 强制转成 short 才能完成赋值
*/
s = s + 1; // 编译失败
s= (short) (s+1); // 编译成功
}

    转换原理图解: 

      

     注意:

      •   浮点转成整数,直接取消小数点,可能造成数据损失精度。
      • int  强制转成 short  去掉2个字节(溢出),可能造成数据丢失。 

    总结:

      a、特点:代码需要进行特殊的格式处理,不能自动完成。

      b、格式:范围小的类型 范围小的变量名 = (范围小的类型) 原本范围大的数据;

     注意事项:

      a、 强制类型转换一般不推荐使用,因为有可能发生精度损失、数据溢出。
      b、 byte/short/char 这三种类型都可以发生数学运算,例如加法“+”.
      c、 byte/short/char 这三种类型在运算的时候,都会被首先提升成为int类型,然后再计算。
      d、 boolean 类型不能发生数据类型转换

  3、ASCII 编码表

    字符与数字的对照关系表(编码表):当有 字符 类型的变量参与运算的时候,会把字符转变为相应的数字,然后再进行计算。

   

    将所有的英文字母,数字,符号都和十进制进行了对应,因此产生了世界上第一张编码表ASCII( American Standard Code for Information Interchange 美国标准信息交换码),里面只有字母数字和常用符号,并没有汉字。

   Unicode码表:万国码。也是数字和符号的对照关系,开头0-127部分和ASCII完全一样,但是从128开始包含有更多字符。

   Tips:

   在 char 类型和 int 类型计算的过程中,char 类型的字符先查询编码表,得到97,再和1求和,结果为98。char类型提升 为了int类型。char类型内存2个字节,int类型内存4个字节。

四、注释(comment)

  注释:就是对代码的解释和说明。其目的是让人们能够更好轻松地了解代码。为代码添加注释,是十分必要的,并不影响程序的编译和运行。

  分类:

    •  单行注释:以 // 开头 换行结束
    •     多行注释:以 /* 开头,以 */ 结束
    •     文档注释:以 /** 开头,以 */ 结束,(文档注释只能注释类和函数,编译文档注释源文件 javadoc -d -doc 源文件名称)

五、扩展知识(编译器的两点优化)

  1、自动类型转换问题

    对于byte/short/char三种类型来说,如果右侧赋值的数值没有超过范围,那么javac编译器将会自动隐含地为我们补上一个(byte)(short)(char)。

   (1)如果没有超过左侧的范围,编译器补上强转。

   (2)如果右侧超过了左侧范围,那么直接编译器报错。

    Demo:

     // 右侧确实是一个int数字,但是没有超过左侧的范围,就是正确的。
    // int --> byte,不是自动类型转换
  byte num1 = /*(byte)*/ 30; // 右侧没有超过左侧的范围
  System.out.println(num1); // 30      // byte num2 = 128; // 右侧超过了左侧的范围      // int --> char,没有超过范围
     // 编译器将会自动补上一个隐含的(char)
char zifu = /*(char)*/ 65;
System.out.println(zifu); // A

    2、编译器的常量优化

   在给变量进行赋值的时候,如果右侧的表达式当中全都是常量,没有任何变量,那么编译器javac将会直接将若干个常量表达式计算得到结果。

   short result = 5 + 8; // 等号右边全都是常量,没有任何变量参与运算编译之后,得到的 .class字节码文件当中相当于【直接就是】:short result = 13; (右侧的常量结果数值,没有超过左侧范围,所以正确。)

   注意:一旦表达式当中有变量参与,那么就不能进行这种优化了。

   Demo:

 public static void main(String[] args) {
short num1 = 10; // 正确写法,右侧没有超过左侧的范围, short a = 5;
short b = 8;
// short + short --> int + int --> int
// short result = a + b; // 错误写法!左侧需要是int类型,含有两个变量 // 右侧不用变量,而是采用常量,而且只有两个常量,没有其他
short result = 5 + 8;
System.out.println(result); short result2 = 5 + a + 8; // 18 错误,里面有变量
}

Java 数据类型 & 变量与常量 & 注释的更多相关文章

  1. JAVA数据类型,变量,转换,常量,运算符

    java数据类型: Java基本类型共有八种,基本类型可以分为三类: 1.字符类型char,用单引号赋值 2.布尔类型boolean 3.数值类型byte.short.int.long.float.d ...

  2. JAVA基础——变量和常量

    JAVA的变量和常量知识总结 一.认识java标识符 标识符就是用于给 Java 程序中变量.类.方法等命名的符号. 使用标识符时,需要遵守几条规则: 1.  标识符可以由字母.数字.下划线(_).美 ...

  3. Java学习笔记三:Java的变量、常量、变量的类型及使用规则

    Java的变量.常量.变量的类型及使用规则 每一种语言都有一些具有特殊用途的词,Java也不例外,它们被称为关键字.关键字对 Java 的编译器有着特殊的意义. 一:Java中的关键字: 注:Java ...

  4. Java 之变量和常量(2)

    Java中的关键字: Java 语言中有一些具有特殊用途的词被称为关键字.关键字对 Java 的编译器有着特殊的意义,在程序中应用时一定要慎重哦!! Java 中常用关键字: 问:这么多,记不住啊.. ...

  5. [Java] 数据类型, 变量, 运算符, 表达式

    title: [Java] 变量与表达式 你已经学会输出 Hello world 了, 那么现在, 我们来学习关于变量的知识 基本数据类型 在 Java 中, 有 8 种基本的数据类型: 名称 描述 ...

  6. Java(变量和常量)

    变量 可以变化的量.可以通过变量来操控内存中的数据:变量可以指代的是内存中的一块空间,而这块空间的位置是确定的但里边要放什么东西还不确定. Java是强类型语言,每个变量都要声明其类型. Java变量 ...

  7. Java 静态变量,常量和方法

    static 关键字 例如:在球类中使用PI这个常量,可能除了本类需要这个常量之外,在另外一个圆类中也需要使用这个常量.这时没有必要 在两个类中同时创建PI这个常量,因为这样系统会将这两个不在同一个类 ...

  8. C语言基础学习基本数据类型-变量和常量

    变量和常量 什么是变量和常量?有些数据在程序运行前就预先设定,并在运行过程中不发生变化,称之为常量:有些数据在程序运行中可能发生变化或被赋值,称之为变量. 使用变量前必须先声明一个变量.变量定义的语法 ...

  9. Java的变量与常量

    常量: 在程序运行期间,固定不变得量. 常量的分类: 字符串常量:凡是用双引号引起来的部分,叫做字符串常量.例如:“abc”.“Hello”.“123”. 整数常量:直接写上的数字,没有小数点.例如: ...

随机推荐

  1. CentOS7 下使用 Firewall防火墙系统封禁允许IP和端口的访问 端口转发 IP转发方法

    CENTOS7的防火墙系统默认已经从iptable改成了firewall,使用方法也有所不同,下面是详细介绍 一.管理端口 列出 dmz 级别的被允许的进入端口 # firewall-cmd --zo ...

  2. GLIBC中的库函数fflush究竟做了什么?

    目录 目录 1 1. 库函数fflush原型 1 2. FILE结构体 1 3. fflush函数实现 2 4. fclose函数实现 4 附1:强弱函数名 5 附2:属性__visibility__ ...

  3. Linux系统中python默认版本为python2.7,修改为python3 项目上传码云

    # 查询系统本系统中安装的python版本 ls -l /usr/bin/python* 1.在虚拟机上新建虚拟环境 # 系统中python默认版本为python2.,可以将其修改为python3 # ...

  4. 【CF848B】 Rooter's Song

    题目链接 \(solution\) 类似于蚂蚁那道题的做法 弹性碰撞相当于交换位置并继续前进,考虑一个起点\((x,0)\),时间为\(t\)出发的\(dancer\),相当于从\((x,-t)\)的 ...

  5. tensorflow数据加载、模型训练及预测

    数据集 DNN 依赖于大量的数据.可以收集或生成数据,也可以使用可用的标准数据集.TensorFlow 支持三种主要的读取数据的方法,可以在不同的数据集中使用:本教程中用来训练建立模型的一些数据集介绍 ...

  6. Maven 基本概念——根目录、项目创建、坐标

     1. MavenProjectRoot(项目根目录)   |----src   |     |----main   |     |         |----java ——存放项目的.java文件  ...

  7. 最新版IntelliJ IDEA2019破解方法、补丁、注册码(激活码),永久激活

    最新版IntelliJ IDEA2019破解方法.补丁.注册码(激活码),永久激活 目录 1.打赏记录 2.适用版本(适用于Windows及MacOS系统) 3.下载补丁 4.JetbrainsIde ...

  8. netcore容器与配置文件操作

    using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration.Json; using Micro ...

  9. 【操作系统之九】Linux常用命令之netstat

    一.概念netstat命令用于显示与IP.TCP.UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况.netstat是在内核中访问网络及相关信息的程序,它能提供TCP连接,TCP ...

  10. spring boot2X整合Consul一使用RestTemplate实现服务调用

    Consul可以用于实现分布式系统的服务发现与配置 服务调用有两种方式: A.使用RestTemplate 进行服务调用 负载均衡——通过Ribbon注解RestTemplate B.使用Feign ...