学习目标:
掌握Java基本类型与基本数据类型转换
学习内容:
1、 Java注释
2、 Java标识符
3、 变量
4、 Java基本数据类型
5、基本数据类型转换
Java代码中的注释
从软件工程的角度上说,一个源程序中20%-30%的编码量为注释是合理的;如果不写注释是不建议
Java语法中提供了3种注释:注释是供程序员阅读的,用于对代码进行说明,从而避免需要了解方法的功能时,还需要进行代码阅读的限制,偶尔用于开发中,阻止一段代码的执行。注释在代码编译时会自动被编译器所忽略
- // 单行注释
- /* 多行注释 */
- /** 文档注释 */
可以通过javadoc命令生成html文档
常见的开发工具:
- javac编译器 Hello.java—>Hello.class
- java解释器 代码的解释执行
- javadoc文档生成器 在java源程序中通过@…添加文档注释,然后再生成html格式的文档,用于团队的合作开发
源文件布局 .java 一个Java源文件可包含三个“顶级”要素
- 一个包声明(可选) package com.meng; 命名空间
- 任意数量的导入语句 import java.io.*; 引入其它定义的程序
- 类和接口声明 [public] class A{}
三要素必须以上述顺序出现。即,任何导入语句出现在所有类定义之前;如果使用包声明,则包声明必须出现在类和导入语句之前。每个Java的编译单元可包含多个类或接口,但是每个编译单元最多只能有一个类或者接口是公共的
- 一个公共的类存放在同名称的文件中,一个文件可以存放多个类定义,但是只能有一个和文件名称相同的public class
- Java是一种自由格式的语言,可以用任意个空格、制表符、换行符隔开每个词。同时也允许将多行
代码写在一行上,注意使用分号隔开;所有的语句末尾以分号;收尾 - 一般建议使用通用习惯的格式存放文件。先随便格式进行定义,然后使用【ctrl+shift+F】快捷键对代码进行格式化处理
Java标识符
一定要遵守最基本的编程规范,目前讲解的规范按照SUN并参考ali的规范进行定义,入职后记得就近原则
给编程中的要素进行命名的规则,赋予变量、类或方法的名称。变量、函数、类和对象的名称都是标识符,程序员需要标识和使用的东西都需要标识符
- 标识符可从一个字母(Unicode编码字符集)、下划线_或美元符号$开始,随后也可跟数字、字母、下划线或美元符号
- 命名方式合法,因为这里的字母采用的是Unicode编码字符集中的字母,全世界范围内的语言都基本提供支持
- 标识符是区分大小写,没有长度限制,可以为标识符取任意长度的名字
有关关键字值得我们注意的地方:不允许使用关键字或者保留字
关键字就是在语法中具备特殊含义的单词;保留字就是没有在语法中定义特殊含义,但是不允许用户使用的单词
true、false和null为小写,而不是象在C++语言中那样为大写。严格地讲,它们不是关键字而是文字。然而,这种区别是理论上的
goto和const不是Java编程语言中使用的关键字,但是这两个单词属于保留字
Java命名规范:SUN一般要求见名知意
- 一般较大的公司中都有自己的规范,如果没有建议采用ali发布的ali的规范或者采用sun的规范
包采用域名反转的方式,全部小写,用点分开
类和接口 使用名词,首字母大写,例如ChinaPerson
方法 一般动词,首字母小写,大写字母分词,例如pickUp
变量 首字母小写,大写字母分词,例如u
变量
变量是在内存中具体存储位置的名称。变量是Java程序中的基本存储单元,它的定义包括变量名、变量类型和作用域三个部分
- Java是一种强类型编程语言,也就是说定义变量时必须指定对应的数据类型
- 数据类型指明变量或表达式的状态和行为,数据类型决定了数的取值范围和运算符号
- 作用域决定了变量名称的有效范围,Java要求变量必须先声明后使用
JAVA是强类型语言
- 每个变量有类型,每个表达式有类型,而且每种类型都是严格定义的。而且一旦定义则类型不能修
改 - Java编译器对所有的表达式和参数都要进行类型相容性的检查,以保证类型是兼容的
例如:在c语言中可以将整数赋值给boolean类型,但是在java中boolean类型和数值类型没有任何关系
任何类型的不匹配都将被报告为错误而不是警告。在编译器完成编译以前,错误必须被改正过来
在Java语言数据类型可以分为两大类:基本类型和引用类型
- 基本类型是指不能再分解的数据类型,其数据在函数的调用中是以传值方式工作的
- 简单数据类型代表单值,而不是复杂的对象
Java是完全面向对象的,但简单数据类型却不是,它们类似于其他大多数非面向对象语言中的简单数据类型。这样做的原因是出于效率方面的考虑。在面向对象中引入简单数据类型不会对执行效率产生太多的影响
基本数据类型
Java编程语言有八个原始数据类型,可分为4种整型、浮点数、字符型数据和布尔型数据,*不会随着计
算机类型而变化的
- Java是针对于VM进行编程,不是针对特定的物理设备,所以不会因为32位系统还是64位系统而有所区别
- Java开放源代码,但是VM不开发源代码,采用的是C实现,针对不同的物理设备需要安装对应的VM
对于临时变量必须先定义后使用,必须先赋初值后使用
数据类型名 变量名【=初值】;
整数类型
整数类 byte,short,int,long 补码存储
- byte字节整数 1B -128到127
- short短整型 2B -32768到32767
- int 整型 4B -2147483648到2147483647
- long 长整型 8B -9223372036854775808到9223372036854775807
所有Java编程语言中的整数类型都是带符号的数字,不存在无符号整数。整数类型的文字可使用二进制、十进制、八进制和十六进制4种表示方式。
- 二进制整数,以0b或者0B开头,例如0b1001001
- 十进制整数。如123,-456,0
- 八进制整数。以0开头,如0123表示十进制数83,-011表示十进制数-9
- 十六进制整数。以0x或0X开头,如0x123表示十进制数291,-0X12表示十进制数-18
整数类缺省为int类型,如在其后有一个字母L表示一个long值。例如long k=123456789012345678L; 实际上末尾的L或者l都可以,但是一般不建议使用
浮点数类型
两种浮点类型float和double,浮点数无法准确存放,所以浮点数不能进行等值判断
- float 4B 单精度浮点数 7-8有效数据 E38
- double 8B 双精度浮点数 15-16有效数据 e308
解决方法是:在123.456后添加f或者F,表示是单精度浮点数。或者double dd=123.456; 系统默认浮点数是double类型
如果一个数包括小数点或指数部分或者在数字后带有字母F或f(float)、D或d(double),则该数为浮点数
表示浮点数有2种计法:
- 十进制数形式。由数字和小数点组成,且必须有小数点,如0.123, 1.23, 123.0
- 科学计数法形式。如:123e3或123E3,其中e或E之前必须有数字,且e或E后面的指数必须为整数。例如12.3e-5含义是12.3X10^-5
浮点数相等的判断:
解决方法是:将两个值进行相减并求绝对值,如果绝对值小于某个值,则认为相等
字符类型
使用char类型可表示单个字符,字符是用单引号括起来的一个字符【强调:不能使用双引号,使用双引号就是字符串类型】,这个字符可以是unicode编码字符集中的任意字符
Java中的字符型数据是16位(2B)无符号型数据,它表示Unicode集,而不仅仅是ASCII集。其范围为0~65535
- Unicode所定义的国际化字符集能表示迄今为止人类语言的所有字符集,它要求使用16位的宽度表示。没有负数的char
- Unicode字符的使用对于英语、德语、西班牙语或法语的语言是有些低效,因为这些语言能够被包含在8位内。但是为了程序的的可移植性和通用性,付出代价是很有必要的
- 计算机处理字符类型时是把这些字符当成不同的整数来看待。因此。严格说,字符类型也算是整数类型的一种
数字(48-57)<大写英文字母(65)<小写英文字母(97)
Java也提供转义字符,以反斜杠\开头,将其后的字符转变为另外的含义
- \ddd 1到3位8进制数所表示的字符(ddd)
- \uxxxx 1到4位16进制数所表示的字符(0123456789abcdef)
- \’ 单引号字符
- " 双引号字符
- \ 反斜杠字符
注意:用双引号引用的文字,就是平时所说的字符串类型不是原始类型,而是一个类(class)String,它被用来表示字符序列
- 字符本身符合Unicode标准,且上述char类型的转义字符适用于String
- 可以把char当作整数数据来操作
逻辑类型
boolean数据类型有两种文字值:true真 和false假
在Java编程语言中boolean类型只允许使用boolean值,在整数类型和boolean类型之间无转换计算
基本数据类型转换
数据类型按精度(取值范围)从低到高排列顺序为:byte,short,char,int,long,float,double
当把级别低的变量的值赋给级别高的变量时,系统自动完成数据类型转换
当把级别高的变量的值赋给级别低的变量时,必须使用显示类型转换运算。显示转换格式为: (目标类型名)要转换的值;
需要注意:在大转小的转换过程中可能损失精度
byte a=54;
int b=a;//自动转化
//-----------
int c=54;
byte d=c;//无法转化,产生报错
> (byte)255 == -1//超出范围
(byte)0x5634 == 0x34//超出范围,窄化操作
(int)23.7 == 23//精度损失
(int)-45.89f == -45//精度损失