当前课程知识点:Java程序设计 > 第一章 Java语言基础知识 > 1.2-基本数据类型与表达式 > 1.2.1-基本数据类型与表达式
大家好
欢迎回来继续学习
java语言程序设计
这一节我们来学习
基本数据类型和表达式
这一节我将给大家介绍
变量与常量
基本数据类型
运算符与表达式
还有呢
数据类型之间的转换
首先呢
我们来了解一下
什么叫做文字量
我们知道
我们用计算机写程序
最基本的功能
就是要让计算机
能够给我们做数据处理对吧
所以程序中呢
必然要出现数据
那么各种数据
如果直接以文字的形式出现
那么它就叫文字量
所以文字量呢
是直接出现在程序中
并且被编译器直接使用的
比如说我们直接写30
3.141592654
这都是文字量
文字量呢
也称为文字常量
什么叫常量呢
所谓常量就是在其生存期内
它的值不可改变的量
除了文字量呢
我们在程序中
应该有大量的
各种自定义的名字对吧
就叫标识符
标识符就是一个程序语言
自己定义的名称
通常呢
它会与内存中的某个位置
也就是某个地址来相对应
标识符的第一个字母
必须是大小写英文字母
下划线 美元符号
这其中之一
标识符的第二个字符
以及后继的字符呢
可以是刚才说的
大小写字母 下划线
美元符号
还可以是数字0到9
那么我们在程序中
要处理数据呢
就要有地方
去存放这个数据
那作为高级语言
我们虽然说知道
会在程序运行期间
为我们的程序
分配内存空间
并且把我们的数据
放到这个内存空间里面去
但是我们在
高级语言程序语句中
却是没有必要
去关注这个数据的
实际内存地址的
那么我们怎么去使用
分配给程序的内存空间
怎么去存储 访问
和对数据进行运算呢
我们就要程序中的变量
一个变量呢
它要由标识符来表示
实际上它就是一个
变量名就是一个标识符
变量呢还要定义类型
那么变量
实际上它是关联到
某个内存地址的
所以呢
我们可以在变量里面存储数值
由于它是变量
它的意思也就是说
这个值在程序的运行过程中
它是可以被改变的
那么相对于变量呢
常量它一旦被初始化以后
其中的值它就不可改变了
接下来我们看看
在java里面能存储和处理
哪些基本的数据类型
所谓基本的数据类型呢
也就是在语言标准中
语言规范中规定了的
编译器直接能够识别的
这些类型
也叫内置数据类型
我们来看这张表
这张表中呢
给出了java里面的
基本的数值类型
包括整数类型
和浮点数类型
那么整数类型呢
有单字节的整数
有短整数
和基本整数
和长整数
浮点数有单精度浮点数
和双精度浮点数
那这些数值类型
它们的文字常量
形式是什么样的呢
这个表中呢
给出了数值类型的
文字常量的表现形式
大家可以看一下这些例子
应该说呢
大部分跟C语言中的
是很类似的
基本上是一样的
那么有一点
它有布尔类型
布尔类型它的文字量
只有两个
一个是true
表示布尔值真
一个是fales
表示布尔值假
在java中
还有大量的数据
是以字符的形式出现的
所以呢
基本数据类型里面
还有一个叫做字符型
字符类型的文字常量呢
是由单引号括起来的
字符或者是转义序列
在java中呢
字符类型采用
Unicode的编码方式
那这里呢
也给出了一些例子
我们看到
单引号里面的单个字母
或者用一个反斜杠
表示的这样的转义符
为什么我们还要有转义序列呢
就是因为有些字符
它是不可显示的字符
所以这个时候呢
我们就要用
这样的转义字符来表示
这个呢
跟在C语言中也是类似的
java中呢
用布尔类型来表示
逻辑值真和假
布尔类型它只有两个取值
true和false
跟我们通过这个
小程序段的例子呢
可以看到布尔值怎么用
我们可以定义
布尔类型的变量
然后呢
我们用布尔常量
给布尔变量赋值
后面呢
当我们讲到选择结构
循环结构的时候呢
在这些选择条件
循环控制条件中
都会大量的
用到布尔类型的表达式
字符串也是我们程序中
常用的一种数据类型
但是在java的基本数据类型中呢
是没有字符串类型的
那么在java中
怎么表示字符串呢
这也跟我们以前学过的
C语言不同
它不能用字符数组
来表示字符串
我们来看看java里面
表示字符串
是用什么办法的
java里面呢
有一个String类
它是java的基础类库中的
一个预定义好的类
我们在下一章呢
会给大家介绍类与对象
那现在呢
我们可以先就讲String
当作一个数据类型来用
就可以了
比如说这里我们定义一个
String类型的对象animal
然后呢
给它初始化成一个字符串
那么String里面
就存放了一个字符串了
我们可以这样来使用
字符串类型
字符串的文字量呢
是由零个或多个字符组成的
需要用双引号括起来
每一个字符
除了可以用可显示的
这种字符直接写出来以外呢
也可以用转义序列来表示
那么大家看这里
例子中呢
有直接显示出来的字符
也有呢
我们用转义序列表示的字符
都可以放在双引号里面
作为字符串的组成部分
接下来呢
我们就来看在java中
有哪些预定义好的运算符
以及如何用这些运算符
来构成运算表达式
首先我们来看算术运算符
这些呢大家看都很眼熟
在C语言中
应该都是学过的
包括自增自减运算符
一元正号复号
还有加减乘除运算符
还有呢(07:53)
另外呢
在java中
跟我们以前学过的C语言一样
赋值呢
也是用赋值运算来实现的
所以java中也有
简单的赋值运算符
以及复合赋值运算符
为了进行大小关系比较呢
在java中
那么是由关系运算符
构成的这样的表达式
关系运算的结果
永远是布尔类型
也就是说
只能是真或者假
关系运算符呢
包括算术比较运算符
还有类型比较运算符
算术比较运算符呢
我们在以前的C语言课中呢
都见到过
比较大小用的
那么类型比较运算符呢
是java的一个特色的功能
instance of
可以用来比较某个对象
是不是属于某个类型
另外呢
就是相等关系运算符
有用于比较
数值型数据是否相等的
相等不等
也可以用来比较呢
两个布尔量
相等或者是不等
还有呢java里面
一个很有特色的数据类型
就叫做引入类型
它是面向对象程序设计的
一个特色的数据类型
后面呢
我们在学到类和对象的时候
会给大家介绍什么是引用
那我们比较两个引用
相等或者不等
也可以用相等 不等
比较运算符
它们都是叫做
相等关系运算符
仅仅只有关系运算符呢
还不能进行复杂的逻辑判断
只能进行一些简单的比较
所以在java中呢
我们还经常要用到逻辑运算符
在java中有逻辑与
逻辑或 逻辑非
逻辑与呢
是当两个操作数
都为真的时候
它的运算结果才为真
否则呢
结果就是假
逻辑或呢
是当两个操作数
都为假的时候
运算结果才为假
否则就是真
逻辑非是一个一元运算符
操作数原来是真就变成假
结果是假了
如果操作数原来是假
那么结果就变成真了
三项条件运算符呢
也是一个很有趣的运算符
这个呢
在C语言中也是有的
在java中呢
它的功能也是一样的
首先计算表达式1
当表达式1的值
为真的时候呢
就选择表达式2的值
作为整个表达式的值
如果表达式1的值为假
就选择表达式3的值
作为整个表达式的结果值
每个参与运算的数据
每个表达式都是有类型的
如果一个表达式的类型
与上下文的语法要求不相符
那这个时候怎么办呢
这个时候
进行编译的时候
编译器会尝试着隐含的
或者自动的为我们做类型转换
那么如果没办法转换
转换不成功
那么这个时候呢
编译器就会认为
这是个语法错误
会给我们报错
那么类型转换呢
可以分成扩展转换
和窄化转换
所谓扩展转换呢
就是由低类型向高类型转换
也就是由表示数据的范围
比较小的类型
向表示数据范围
比较大的类型转换
那么这种转换呢
有可能损失精度
比如说从整数类型
向浮点数类型转换
那么就会损失精度
如果说在浮点处中
从float向double转换
那么就不会损失任何信息
但是窄化转换是危险的
是有可能丢失信息的
比如说double类型的
表示数据范围更宽
而整数int类型
表示的数据范围更窄
那么你将一个double数据
转化成整数的时候
有可能数据太大了
整数(里面)放不下
还有呢
它的小数部分
就结掉了 丢掉了
那么这些都是会丢失信息的
所以窄化转换呢
是有危险的 要慎用的
刚才说了
如果说我们给的
表达式类型与上下文不符
编译器呢
有时候会试图帮我们做转换
那么这个呢
实际上我们叫它隐含转换
隐含转换呢
有赋值转换
方法调用转换
和字符串转换
字符串转换呢
是java语言的特色
在java语言中 任何类型
都可以转化为字符串类型
比如说我们可以用
这个加法运算符
去将一个字符串
跟另外类型的数据
做加法
string类型
跟另外类型做加法
这个时候呢
另外不管是什么类型
它都能够
自动转换成string类型
这是隐含转换
另外呢就是显示转换
也叫强制转换
那我们比如说
可以将一个5.0
5.0这个写
直接写出来常量
默认是什么
默认是double类型
我们将它强制转换成
float类型
我们就用括号
里面float来指定
我要将这样一个
double类型的常量
转换成float类型
然后你转换变量
也是这样写的
一样的
这一节呢
我给大家简单介绍了
java的基本数据类型
运算符和表达式
其中大部分呢
跟C语言中是一样的
也有一些不同点
需要大家特别关注
接下来下一节
我给大家介绍数组
那么java的数组跟C语言
差别还是很大的
-1.0-导学
--1.0-导学
-1.1-Java与面向对象程序设计简介
--第一章 Java语言基础知识--1.1-Java与面向对象程序设计简介
-1.2-基本数据类型与表达式
-第一章 Java语言基础知识--1.2-基本数据类型与表达式
-1.3-数组
--1.3.1-数组
-第一章 Java语言基础知识--1.3-数组
-1.4-算法的流程控制
--第一章 Java语言基础知识--1.4-算法的流程控制
-1.5-第一章小结
-第一章编程练习题
-课件
--外部链接
-Java环境配置、Eclipse使用、Helloworld程序详解
--使用eclipse建立Java项目、编写和运行Java程序
-Java数据类型
--Java整数类型
--Java浮点类型
--数据类型实战
--数据类型转换
--Java强制类型转换精度损失示例与表达式中的数据类型转换
-Java数组
-Java变量
--Java的变量
-命令行参数
--命令行参数的介绍
-2.0-导学
--2.0-导学
-2.1-面向对象方法的特性
--第二章 类与对象--2.1-面向对象方法的特性
-2.2-1-类声明与对象创建
--第二章 类与对象--2.2-1-类声明与对象创建
-2.2-2-数据成员
--第二章 类与对象--2.2-2-数据成员
-2.2-3-方法成员
--第二章 类与对象--2.2-3-方法成员
-2.2-4-包
--2.2-4-包
--第二章 类与对象--2.2-4-包
-2.2-5-类的访问权限控制
--第二章 类与对象--2.2-5-类的访问权限控制
-2.3-1-对象初始化
--第二章 类与对象--2.3-1-对象初始化
-2.3-2-内存回收
--第二章 类与对象--2.3-2-内存回收
-2.4-枚举类
--2.4-枚举类
--第二章 类与对象--2.4-枚举类
-2.5-应用举例
--2.5-应用举例
-2.6-第2章小结
-第二章编程练习题
-课件
--第二章课件
-3.0-导学
--3.0-导学
-3.1.1-3.1.2-类继承的概念和语法
--第三章 类的重用--3.1.1-3.1.2-类继承的概念和语法
-3.1.3-隐藏和覆盖
--第三章 类的重用--3.1.3-隐藏和覆盖
-3.2-Object 类
--第三章 类的重用--3.2-Object 类
-3.3-终结类与终结方法
--第三章 类的重用--3.3-终结类与终结方法
-3.4-抽象类
--3.4-抽象类
--第三章 类的重用--3.4-抽象类
-3.5-泛型
--3.5-泛型
--第三章 类的重用--3.5-泛型
-3.6-类的组合
--3.6-类的组合
-3.7-小结
--3.7-小结
-第三章编程练习题
-课件
--课件
-4.0-导学
--导学
-4.1-接口
--接口
--第四章 接口与多态--4.1-接口
-4.2.1-4.2.2-类型转换
--类型转换
--第四章 接口与多态--4.2.1-4.2.2-类型转换
-4.2.3-方法的查找
--方法的查找
--第四章 接口与多态--4.2.3-方法的查找
-4.3-多态的概念
--多态的概念
--第四章 接口与多态--4.3-多态的概念
-4.4-多态的应用举例
--多态的应用举例
--第四章 接口与多态--4.4-多态的应用举例
-4.5-构造方法与多态性
--构造方法和多态性
--第四章 接口与多态--4.5-构造方法与多态性
-4.6-本章小结
--本章小结
-第四章编程作业
-课件
--课件
-5.0-导学
--5.0-导学
-5.1.1-5.1.2-异常处理的概念
--第五章 输入输出--5.1.1-5.1.2-异常处理的概念
-5.1.3-5.1.5-异常的处理
--第五章 输入输出--5.1.3-5.1.5-异常的处理
-5.2-输入输出流的概念
--输入输出流的概念
--第五章 输入输出--5.2-输入输出流的概念
-5.3.1-写文本文件
--写文本文件
--第五章 输入输出--5.3.1-写文本文件
-5.3.2-读文本文件
--读文本文件
--第五章 输入输出--5.3.2-读文本文件
-5.3.3-写二进制文件
--写二进制文件
--第五章 输入输出--5.3.3-写二进制文件
-5.3.4-读二进制文件
--读二进制文件
-5.3.5-File类
--File类
-5.3.6-处理压缩文件
--处理压缩文件
-5.3.7-对象序列化
--对象序列化
-5.3.8-随机文件读写
--随机文件读写
-5.4-本章小结
--本章小结
-课件
--课件
-6.0-导学
--导学
-6.1-Java集合框架介绍
--第六章 对象群体的组织--6.1-Java集合框架介绍
-6.2-主要接口及常用的实现类
--第六章 对象群体的组织--6.2-主要接口及常用的实现类
-6.3-常用算法
--常用算法
-6.4-数组实用方法
-6.5-基于动态数组的类型(Vector, ArrayList)
--基于动态数组的类型(Vector, ArrayList)
-6.6-遍历Collection
-6.7-Map接口及其实现
-6.8-第6章小结
--第6章小结
-课件
--课件
-7.0-导学
--导学
-7.1-绘图
--绘图
-7.2-Swing基础
--Swing基础
-7.3-Swing的层次
--Swing的层次
-7.4-布局管理
--布局管理
-7.5-内部类
--内部类
-7.6-事件处理的基本概念
-7.7-事件派发机制
--事件派发机制
-7.8-顶层容器
--7.8-顶层容器
-7.9-中间层容器(一)
-7.10-中间层容器(二)
-7.11-原子组件(一)
-7.12-原子组件(二)
-7.13-原子组件(三)
-7.14-其它Swing特性
-7.15-第7章小结
-课件
--课件