Java自学第一课之基本数据类型与表达式——自学笔记
- 第一节主要学习变量与常量、基本数据类型、类型转换的Java语言基本知识
- 一、变量与常量
- 二、基本数据类型
- 三、 类型转化
第一节主要学习变量与常量、基本数据类型、类型转换的Java语言基本知识 一、变量与常量 1.标识符
要学习变量和常量,首先要知道标识符的概念。标识符是一个名称,是用户编程时使用的名字,对于变量、常量、函数、语句块也有名字,我们统统称之为标识符。不同的编程语言对标识符的取名规则大体相同,Java中对标识符的取名有以下几点规则:
- 标识符由字母、数字、下划线“_”、美元符号“$”组成,第一个字符不能是数字。如:1student,开头为数字,不合法。
- 不能把java关键字和保留字作为标识符。如:if,是关键字,不合法。
- 标识符没有长度限制。
- 标识符对大小写敏感。如:A和a是两个标识符。
abstract | assert | boolean | break | byte |
---|---|---|---|---|
case | catch | char | class | const |
continue | default | do | double | else |
enum | extends | final | finally | float |
for | goto | if | implements | import |
instanceof | int | interface | long | native |
new | package | private | protected | public |
return | strictfp | short | static | super |
switch | synchronized | this | throw | throws |
transient | try | void | volatile | while |
2.变量
变量是一个由标识符命名的项,它具有类型和作用域。变量的声明语法如下:Type varName [=value][, varName [=value]…];
Type为数据类型,VarName为变量名(变量名的命名一般采用驼峰命名并且见名知意,这是一种规范,增加程序可读性,并不是规定)。方括号中为可选项,即同时声明并赋值多个变量 。如int a=1,b=2;
变量的作用域以后再写。
3.常量
在变量的声明前加上关键字final修饰符,该变量就变成了一个常量,常量一旦被初始化(赋值)就不能再被改变了其值了。语法如下:
final int a=1;
变量与常量还有许多不一样,以后再写。
二、基本数据类型 数据也有类型,Java的基本数据类型(还有其他类型不是基本数据类型)有8种:byte、short、int、long、float、double、char、boolean。
其中 数字型:
类型 | 说明 | 长度 | 最小值 | 最大值 |
---|---|---|---|---|
byte | 带符号微整数 | 8位 | -128 | 127 |
short | 带符号短整数 | 16位 | -2^15 | 2^15-1 |
int | 带符号整数 | 32位 | -2^31 | 2^31-1 |
long | 带符号长整数 | 62位 | -2^63 | 2^63-1 |
float | 单精度浮点型 | 32位 | -2^149 | 太大了 |
double | 双精度浮点型 | 64位 | 2^-1074 | 太大了 |
布尔型:boolean,只有两个值true和flase
三、 类型转化 每个表达式都有类型,如果表达式的类型和上下文不符,要么产生编译错误,要么发生隐含的类型转换。类型转换可以分为扩展转换和窄化转换。
1.扩展转换(自动转换)
整型数据从低精度类型转换为高精度时不会损失精度,即byte,short(char),int,long
浮点数和整数的转换会发生精度丢失,程序也会报错。从float到double不会丢失精度,但反过来会丢失精度。
2.窄化转换(强制转换)
转换按照double、float、long、int、short、byte这个方向会丢失精度,这时程序会报错,但可以用强制转换。转换方式为int a; float b=2; a=(int)b;
下面四中情况可能发生类型转换。
- 赋值转换:表达式运算结果的类型和被赋值的变量类型不一致时,表达式结果的类型自动被转换成变量所对应的类型。
- 方法的调用转换:在方法或者构造方法中进行类型转换。
- 强制类型转换:讲一个表达式类型强制转换为另一个类型,例如(double)6。
- 字符串转换:在"字符串+操作数"的情况下,操作数会被自动转换成字符串类型。
推荐阅读
- java IO流相关的类的分类和总结
- java 数组声明定义 数组内存分配 数组初始化 数组引用 数组的遍历
- Java中构造器内部的多态方法的行为
- 多态性之编译期多态和运行期多态(JAVA版)
- Java向下转型的意义与塑型的三个方面
- Java自学Math类——自学笔记
- Java自学笔记|接口之间的继承
- Java自学之反射——自学笔记
- Java自学笔记|System.in与System.out(标准输入与输出)详解
- Java自学之break与标号一同使用——自学笔记