Java自学第一课之基本数据类型与表达式——自学笔记


Java自学第一课之基本数据类型与表达式——自学笔记

  • 第一节主要学习变量与常量、基本数据类型、类型转换的Java语言基本知识
    • 一、变量与常量
    • 二、基本数据类型
    • 三、 类型转化

第一节主要学习变量与常量、基本数据类型、类型转换的Java语言基本知识 一、变量与常量 1.标识符
要学习变量和常量,首先要知道标识符的概念。标识符是一个名称,是用户编程时使用的名字,对于变量、常量、函数、语句块也有名字,我们统统称之为标识符。不同的编程语言对标识符的取名规则大体相同,Java中对标识符的取名有以下几点规则:
  1. 标识符由字母、数字、下划线“_”、美元符号“$”组成,第一个字符不能是数字。如:1student,开头为数字,不合法。
  2. 不能把java关键字和保留字作为标识符。如:if,是关键字,不合法。
  3. 标识符没有长度限制。
  4. 标识符对大小写敏感。如: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
其中const和goto是java的保留字,保留字是为java预留的关键字,他们虽然现在没有作为关键字,但在以后的升级版本中有可能作为关键字。是语言已经定义过的字,一些保留字可能没有相对应的语法,考虑到扩展性,为了向后兼容不能再将其作为变量名。有面试题问Java中有goto关键字吗,答案是有的,是作为保留关键字,现在几乎不用。
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 太大了
【Java自学第一课之基本数据类型与表达式——自学笔记】字符型:char
布尔型: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;
下面四中情况可能发生类型转换。
  1. 赋值转换:表达式运算结果的类型和被赋值的变量类型不一致时,表达式结果的类型自动被转换成变量所对应的类型。
  2. 方法的调用转换:在方法或者构造方法中进行类型转换。
  3. 强制类型转换:讲一个表达式类型强制转换为另一个类型,例如(double)6。
  4. 字符串转换:在"字符串+操作数"的情况下,操作数会被自动转换成字符串类型。
最后需要注意的是,Java中的浮点数默认是double类型的,整数默认是int类型的,哪怕浮点数你声明的类型的是float或其他。如果非要声明一个float类型的,可以在结尾加F或f。基本类型做强制转换不会出错,但是他们相应的包装类做强制转换时,会出错,比如将Double类的对象强制转换为Integer类的对象时就会出错。

    推荐阅读