Java 2 实用教程 第二章 基本数据类型与数组

第二章 基本数据类型与数组

2.1 标识符与关键字

2.1.1 标识符

  • 标识符命名规则:
    • 标识符由字母、下划线、美元符号和数字组成,长度不受限。
    • 标志符的第一个字符不能是数字。
    • 标识符不能是关键字
    • 标识符不能是true, false,null。(尽管这些不是java的关键字)
    • Java是大小写敏感的。即hello,Hello是两个不同的标识符。
  • Java约定:
    • 关键字、变量名、对象名、方法名、包名通常首字母小写。
    • 类名首字母大写。
    • 常量名全部字母均大写。
    • 如果有多个单词构成标识符,则其后各个单词首字母大写(驼峰命名法).

2.1.2 Unicode字符集

Java语言使用Unicode字符集。Unicode字符集可以表示拉丁字母,汉语中的汉字,日文的片假名和平假名,朝鲜文,俄文,希腊字母以及其他许多语言中的文字。

2.1.3 关键字

关键字也叫做保留字,是具有特定用途或被赋予特定意义的一些单词。

2.1.4 分隔符

  1. 分隔符用于分隔不同的语法成分,不同的语法成分用不同的分隔符。
  2. 例如,标识符之间的分隔符为空格;语句之间的分隔符为;,数据之间的分隔符为
 public class  HelloWorld{
         public static void main( String args[] ){
           int i, j;  //变量i , j之间使用逗号分隔
           System.out.println("Hello world!" ); //两条语句之间使用分号分隔
        }
  }

2.2 基本数据类型

  1. 什么是数据类型

    • 数据:是描述客观事物的数字、字符以及所有能输入到计算机中并能被计算机接受的各种符号集合。数据是计算机程序的处理对象。
    • 类型:是具有相同逻辑意义的一组值的集合。如数字类型、符号类型。
    • 数据类型:数据类型是指一个类型和定义在这个类型上的操作集合。数据类型定义了 数据的性质取值范围 以及对数据所能进行的 运算和操作
  2. 数据类型的分类:

    Java数据的数据类型分为两大类:基本数据类型和引用数据类型。

    1. 基本数据类型:8

      • 整数类型:byte、short、int、long
      • 浮点数类型:(单精度浮点类型)float、(双精度浮点类型)double
      • 字符型:char
      • 布尔(逻辑)类型:boolean
    2. 引用数据类型:3

      数组,类,接口。

    简单的来说,基本数据类型中存的值代表的是数值本身,而引用数据类型中的值是引用(可以理解为地址)

2.2.1 逻辑类型

  • 常量:truefalse
  • 变量:使用关键字boolean来声明逻辑类型变量。
boolean male; /声明一个逻辑类型变量male
boolean female = true; /声明一个逻辑类型变量female,并且在声明时赋初值
boolean a1, a2, a3 = false, a4; /连续声明多个变量,并对其中的某些变量赋初值

在Java中true和false 不能表示成数字类型. 即true不能转换成1,false不能转换成0;

2.2.2 整数类型

整数类型有4种。

int

int型在任何操作系统中都为32位,这体现了java的平台无关性。

  • 常量:

二进制表示:0b111(用0b0B作为前缀)
八进制表示:077(用数字0作为前缀)
十进制表示:123(不需要前缀)
十六进制表示:0x3ABC(用0x0X作为前缀)

  • 变量:

使用int来声明变量,也可在声明是同时赋初值。

int x = 12, y = 0x78ab, z = 0b011;

byte

在java中不存在byte型常量表示法。因为(不加修饰的)整数和小数默认是int型和double型。

  • 变量:使用关键字byte声明

byte = 28 , 漂亮 = 98

也可以让汉字作为变量。

short

在java中不存在short型常量表示法。与byte型相同。

  • 变量:使用关键字short声明

short a =20

long

  • 常量:

long型常量用后缀L表示。例如:108L(十进制)、07123L(八进制)

  • 变量:使用关键字long声明。

2.2.3 字符类型

  1. 字符类型表示(Unicode)字符,一个字符占用16位。

  2. 字符常量的两种表示法:

    1. 一种是用单引号将Unicode字符集中的字符括起来。
    2. 另一种用Unicode值表示。'\u'+(十六进制的值)
    
    \u0061 \表示小写字母a
    'a'
    

    有些字符不能通过键盘输入到字符串或程序中。

    \n(换行),\b(退格),\t(水平制表符),\'(单引号),\"(双引号),\\(反斜线)

    其中\被称作转义字符。

  3. 小技巧

如果我们想知道一个字符处于Unicode字符集中的位置,可以将其转换成int型后输出。例如,字符'a',int tmp_var = (int)'a'。打印tmp_var便可以直到字符'a'的位置。

如果我们想知道一个0~65535的数所代表的的Unicode字符,那么可以将其转换成char类型后输出。

2.2.4 浮点数类型

float型:在存储float型数据时保留8位有效数字。

  • 常量:

小数表示法:453.5439f、21379.987F
指数表示法:2e40f。(2乘10的40次方)

  • 变量:使用float关键字声明。

double型:在存储double型数据时保留16位有效数字。

  • 常量:

小数表示法:2389.539d、20.3654D
指数表示法:与float一致

  • 变量:使用double关键字声明

2.3 类型转换运算

  • 当把级别(精度)低的变量的值赋给级别高的变量时,系统自动完成数据类型的转换。
  • 当把级别(精度)高的变量的值赋给级别低的变量时,必须使用类型转换运算。否则会报错。
  • java中7种基本数据类型的精度从低到高排序(不包括布尔类型):
byte-> short-> char-> int-> long-> float-> double

注意:第二条规则对char类型不适用。当字符类型的变量与数字类型的变量进行运算时,会自动被转换成其所对应的Unicode码(十进制)。

2.4 输入与输出数据

2.4.1 输入基本型数据

在使用Scanner类前,需要在程序头部导入该类,使用import java.util.Scanner;

使用Scanner类创建一个对象。
Scanner reader = new Scanner(System.in);

构造出的reader对象有以下方法:

nextBoolean();nextByte();nextShort();nextInt();nextLong();nextFloat();nextDouble()
  • 分隔标记:reader对象用空白作为分隔标记。以上所述的方法,每次读取终端输入的一个值,由于这些方法以空格作为分隔标记,当我们只要输入一个值时,该值中间不能出现空格,否则会被当做输入了两个值。如果在输入数据中出现了空格,说明我们输入了两个数据,这两个数据需要两个reader对象的方法接收。
  • 堵塞状态:略

2.4.2 输出基本型数据

System.out.println()System.out.print()可以输出串值、表达式的值。两者的区别是前者输出数据后会换行,后者不会。

Java允许使用并置符号+将变量、表达式或者一个常数值与一个字符串并置在一起输出。

System.out.printf()可以格式化输出。

语法如下:

System.out.printf("格式控制部分", 表达式1,表达式2,...)
示例:System.out.printf("这儿有两个数:%d, %f", 12, 23.56)

%d:输出int型数据;
%c:输出char型数据;
%f:输出浮点型数据,小数部分最多保留6;
%s:输出字符串数据;
%md:输出的int型数据占m列;
%m.nf:输出的浮点型数据占m列,小数部分保留n位;

2.5 数组

2.5.1 声明数组

数组的元素类型 数组名[];
数组的元素类型[] 数组名;

int array_name[];
int[] array_name;

①在Java计中声明数组是不能指定其长度的。

int a[5]; //错误错误(X)

②Java数组两种初始化方式。

  • 数组变量的初始化
  • 静态初始化

    int a[] = {1, 2, 3}
    
  • 动态初始化

    int a[];
    a = new int[5];
    

2.5.2 访问数组元素

访问数组元素使用下标索引的方式,即:数组名[元素下标]

int a[] = new int[5];
int b = a[0] \\使用下标访问数组a的第一个元素

这里,new int [5]表示为数组a分配了5个int型变量的空间。在大部分计算机语言中,数组下标都是从0开始,所以这里的可访问下标范围是0~4。当下标不在这个范围内时,会触发异常。

2.5.3 数组的长度

数组.length

a.length;//此处的前提是数组已初始化。

int a[];//为数组变量分配地址空间,未分配存储空间
a = new int[5]; //分配了存储空间
int number = a.length //使用number存储数组a的长度

2.5.4 数组的引用

数组属于引用型变量,因此两个相同类型的数组如果具有相同的引用,它们就有完全相同的元素。

对于基本数据类型,我们声明的变量存储在被称为的存储空间中,对于引用数据类型变量,它们的值也存在中,但是,对于引用型变量,它们的值一般不是单纯的数字,而是引用((地址),一种带有指向性的数据),通过这个引用,我们可以访问到一块空间中存储的数据。

int a[]; //声明一个数组类型的变量a

对于这段语句,内存模型如下:

在这里插入图片描述

//承接上一条语句
a = new int[3]; //为数组a分配3个int型变量的空间

这段语句对应的内存模型如下:

在这里插入图片描述

对于new关键字,它会帮我们申请内存空间,同时返回分配空间的首元素引用(地址)。

  • 对于静态初始化,int a[] = {1, 2, 3}。分配三个int型变量的空间,并且将这三个int型变量空间初始化,最后返回首元素引用(地址)。
int var1[] = {1, 2, 3};
int var2[] = {4, 5, 6};

在这里插入图片描述

var2 = var1;

在这里插入图片描述

2.5.3 如何提前删除数组空间

Java中没有delete语句,new出来的空间,如果没有任何变量引向它,虚拟机则可以对其进行内存回收。

不一定会立即删除,虚拟机可以进行该区域的内存回收,但具体时间由虚拟机的自己决定,无法完全由程序控制

参考资料

[1] 耿祥义,张跃平.Java2 实用教程(第6版)[M].北京:清华大学出版社,2021

Java2实用教程 rar 第1章Java入门 1 1Java的诞生 1 2Java的特点 1 3安装Sun公司的SDK 1 4一个Java程序的开发过程 1 5一个简单的Java应用程序的开发过程 1 6一个简单的Java小应用程序 1 7什么是JSP 习题 第2章标识符 关键字和数据类型 2 1标识符和关键字 2 2Java基本数据类型 2 3Java数组 习题 第3章运算符 表达式和语句 3 1运算符与表达式 3 2语句概述 3 3控制语句 3 4 循环语句 3 5break和continue语句 习题 第4章类 对象和接口 4 1编程语言的几个发展阶段 4 1 1机器语言 4 1 2过程语言 4 1 3面向对象编程 4 2类 4 2 1类声明 4 2 2类体 4 2 3成员变量和局部变量 4 2 4方法 4 2 5方法重载 4 2 6构造方法 4 2 7类方法和实例方法 4 2 8值得注意的问题 4 3对象 4 3 1创建对象 4 3 2使用对象 4 3 3于象的引用和实体 4 3 4参数传值 4 4static关键字 4 4 1实例变量和类变量的区别 4 4 2实例方法和类方法的区别 4 5this关键字 4 6包 4 6 1包语句 4 6 2import语句 4 6 3将类打包 4 7访问权限 4 7 1私有变量和私有方法 4 7 2共有变量和共有方法 4 7 3友好变量和友好方法 4 7 4受保护的成员变量和方法 4 7 5public类与友好类 4 8类的继承 4 8 1子类 4 8 2子类的继承性 4 8 3成员变量的隐藏和方法的重写 4 8 4final关键字 4 9对象的上转型对象 4 10多态性 4 11abstract类和abstract方法 4 12super关键字 4 13接口 4 13 1接口的声明与使用 4 13 2理解接口 4 13 3接口回调 4 13 4接口做参数 4 14内部类 4 15匿名类 4 15 1和类有关的匿名类 4 15 2和接口有关的匿名类 4 16异常类 4 16 1try catch语句 4 16 2自定义异常类 4 17Class类 4 17 1获取类的有关信息 4 17 2使用Class实例化一个对象 4 18基本类型的类包装 4 18 1Double类和Float类 4 18 2Byte Integer Short 工 ong类 4 18 3Character类 4 19反编译和文档生成器 4 20JAR文件 4 20 1将应用程序压缩为JAR文件 4 20 2将类压缩成JAR文件 4 20 3更新 查看JAR文件 习题 第5章字符串 5 1字符串 5 2字符串的常用方法 5 3字符串与基本数据的相互转化 5 4对象的字符串表示 5 5StringTokenizer类 5 6字符串与字符 字节数组 5 7StringBuffer类 5 8正则表达式 习题 第6章时间 日期和数字 6 1Date类 6 2Calendar类 6 3Math类 6 4BigInteger类 习题 第7章AWT组件及事件处理 7 1Java窗口 7 1 1 Frame常用方法 7 1 2菜单条 菜单 菜单项 7 1 3窗口与屏幕 7 2文本框 7 2 1TextField类的主要方法 7 2 2文本框上的ActionEvent事件 7 3内部类实例做监视器 7 4按钮与标签 7 4 1标签组件 7 4 2按钮组件 7 5菜单项 7 6文本区 7 6 1TextArea类主要方法 7 6 2文本区上的TextEvent事件 7 7面板 7 7 1Panel类 7 7 2ScrollPane类 7 8布局 7 8 1FlowLayout布局 7 8 2BorderLayout布局 7 8 3CardLayout布局 7 8 4GridLayout布局 7 8 5BoxLayout布局 7 8 6null布局 7 9画布 7 10选择型组件 7 10 1选择框 7 10 2下拉列表 7 10 3滚动列表 7 11Component类的常用方法 7 12窗口事件 7 13鼠标事件 7 14焦点事件 7 15键盘事件 7 16使用剪贴板 7 17打印 7 18综合实例 习题 第8章建立对话框 8 1Dialog类 8 2文件对话框 8 3消息对话框 8 4确认对话框 8 5颜色对话框 习题 第9章Java多线程机制 9 1Java中的线程 9 2Thread类的子类创建线程 9 3使用Runnable接口 9 4线程的常用方法 9 5GUI线程 9 6线程同步 9 7在同步方法中使用wait notif 和nodf3 All 方法 9 8挂起 恢复和终止线程 9 9计时器线程Timer 9 10线程联合 9 11守护线程 习题 第10章输入输出流 10 1File类 10 2FileInputStream类 10 3FileOutputStream类 10 4FileReader类和FileWriter类 10 5使用文件对话框打开和保存文件 10 6RandornAccessFile类 10 7数据流 10 8数组流 10 9对象流 10 10序列化与对象克隆 10 11文件锁FileLock 10 12Process类中的流 10 13带进度条的输入流 习题 第11章Java网络的基本知识 11 1使用URL 11 2读取URL中的资源 11 3显示URL资源中的HTML文件 11 4处理超链接 11 5InetAdress类 11 6套接字 11 7网络中的数据压缩与传输 11 8UDP数据报 11 9广播数据报 习题 第12章JavaApplet基础 12 1JavaApplet的运行原理 12 2网页向JavaApplet传值 12 3JavaApplet扣使用URL 12 4JavaApplet中建立新线程 12 5JavaApplet中使用套接字 习题 第13章常见数据结构的Java实现 13 1链表 13 2栈 13 3树集 13 4树映射 13 5散列集 13 6散列表 13 7向量 习题 第14章图形与图像 14 1绘制文本 14 2绘制基本图形 14 3建立字体 14 4清除 14 5Java2D 14 6图形的布尔运算 14 7绘制钟表 14 8绘制图像 14 9制作JPG图像 14 10XOR绘图模式 14 11打印图形 图像 习题 第15章Java数据库连接 JDBC 15 1创建数据源 15 2JDBC ODBC桥接器 l5 3顺序查询 15 4可滚动结果集 15 5排序查询 15 6模糊查询 15 7随机查询 15 8更新 添加 删除记录 l5 9预处理语句 15 10数据库访问中的套接字技术 习题 第16章Java与多媒体 16 1在小程序中播放音频 16 2在另一个线程中创建音频对象 16 3在应用程序中播放音频 16 4Java媒体框架 JMF 习题 第17章JavaSwing基础 17 1几个重要的类 17 2中间容器 17 3各种组件 习题">Java2实用教程 rar 第1章Java入门 1 1Java的诞生 1 2Java的特点 1 3安装Sun公司的SDK 1 4一个Java程序的开发过程 1 5一个简单的Java应用程序的开发过程 1 6一个简单的Java小应用程序 1 7什么是JSP 习题 第2章标识符 关键字和数据类型 2 1标识 [更多]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值