第二章
主要内容
标识符与关键字
-
java所有的组成成分都需要有名字,称作标识符,用来表示类名、变量名、方法名
-
标识符
- 用来标识类名、变量名、方法名、类型名、数组名、文件名的有效字符序列称为标识符,
- 简单地说,标识符就是一个名字 。
-
Java语言规定
- 标识符由字母、下划线、美元符号和数字组成,长度不受限制。
- 标识符的第一个字符不能是数字字符。
- 标识符不能是关键字
- 标识符不能是
true
、false
和null
-
关键字
- 关键字就是具有特定用途或被赋予特定意义的一些单词,不可以把关键字作为标识符来用 。
- 例如: boolean、byte、short、int、float、double、char、if、else等。
- 关键字都是小写的。
- 遇到大写肯定不是关键字。
-
变量
-
强类型语言
- 变量必须先定义后才能使用
- 安全性高
- 速度慢
-
弱类型语言
- 速度快
- 安全性低
-
java变量是程序中最基本的存储单元,其要素包括变量名、变量类型和作用域
-
命名规范
- 见名知意
- 类成员变量首字母小写&驼峰原则
- 局部变量首字母小写和驼峰原则
- 常量使用大写和下划线
- 类名使用首字母大写和驼峰原则
- 方法名首字母小写和驼峰原则二
-
变量的声明
type varName [=value] ; //数据类型 变量名 = 值
-
注意事项
- 每个变量都有类型,类型可以是基本类型,也可以是引用类型
- 变量名必须是合法的标识符
- 变量声明是一条完整的语句因此每一个声明必须以分号结束
-
作用域
public class Demo{ //boolean初始值是false, //其他基本类型默认值为 0 / 0.0 //除了基本类型,其余类型初始值是null //实例变量,从属于对象 int age; String name; public static void main(String[] args){ //局部变量,只能在main中使用 int i = 10; //实例变量的使用 Demo demo = new Demo(); demo.age; demo.name; } public void add(){ } }
-
-
常量
//常量大写 //修饰符,不存在先后顺序 static final double PI = 3.14; final static double PI = 3.14
-
数据类型
- 基本数据类型
- 引用数据类型
-
基本数据类型
-
字节
- 位(bit):计算机内部存储的最小单位
- 字节(byte):计算机中数据处理的基本单位
- 字符:计算机使用的各种符号
-
有8种基本数据类型:
-
boolean:一个字节
-
byte:一个字节(-128-127
-
short:两个字节(-32768-32767
-
int:四个字节(-2^31 ~ 2^31-1)
-
long:八个字节
- 在数字后面加上L
- long num = 30L;
-
float:四个字节,
- 存储时保留八位有效数字
- 在数字后面必须加上F
- float num = 50.1F;
-
double:八个字节
-
char:两个字节(-27~27-1
-
String 不是关键词,是类
-
-
8种基本数据类型习惯上可分为以下四大类型:
-
逻辑类型:boolean
-
整数类型:byte、short、int、long
- 进制
- 八进制:前缀加0
- 十六进制:前缀加0x
- 进制
-
字符类型:char
- Java语言使用Unicode标准字符集,最多可以识别65536个
- 转义字符
- \t 制表符
- \n 换行符
- \b (退格)
- \‘ (单引号)
- \“ (双引号)
- \ (反斜线)
-
浮点类型:float、double
-
-
-
类型转换运算
-
Java中数据的基本类型(不包括逻辑类型)按精度从
低
到高
排列:- byte
- short
- char
- int
- long
- float
- double
-
规则:
-
当把级别低的变量的值赋给级别高的变量时,系统自动完成数据类型的转换。
- 例如:
float x=100;
- 例如:
-
当把级别高的变量的值赋给级别低的变量时,必须使用显示类型转换运算。
-
显示转换的格式:
(类型名)要转换的值; 例如: int x=(int)34.89;
-
当把一个int型常量赋值给一个byte和short型变量时,不可以超出这些变量的取值范围,否则必须进行类型转换运算;
-
例如:
byte b = 128; //(error) byte b = (byte)128 //(ok)
-
-
-
不能把布尔值进行转换
-
不能把对象类型转换为不相干类型
-
输入、输出数据
-
Scanner
对象-
通过
Scanner
类获取用户的输入 -
基本语法
Scanner s = new Scanner(System.in);
-
通过
Scanner
类的next()
与nextLine()
方法获取输入的字符串-
next()
- 一定要读取到有效字符才可以结束输入
- 对输入有效字符之前遇到的空白,将自动去除
- 只有输入有效字符后才将其后面输入的空白作为分隔符或结束符
next()
不能得到带有空格的字符串
-
nextLine()
- 以
Enter
作为结束符,即返回输入回车键之前的所有字符 - 可以获得带空格的字符串
- 以
-
-
在读取前我们一般需要使用
hasNext()
和hasNextLine()
来判断是否还有输入的数据package com.lxt.scanner; import java.util.Scanner; publilc class Demo{ public static void main(String[] args){ //创建一个扫描器对象,用于接收键盘数据 Scanner scanner = new Scanner(System.in); Ststem.out.println("使用next方式接收:"); //判断用户有没有输入字符串 if(scanner.hasNext()){ //使用next方式接收 String str = scanner.next(); System.out.println("输出内容为:" + str); } //凡是属于IO流的类,如果不关闭会一直占用资源 scanner.close(); } }
-
-
输入基本型数据
-
可以使用
Scanner
类创建一个对象:Scanner reader = new Scanner(System.in);
-
其中:reader对象调用下列方法,读取用户在命令行输入的各种基本类型数据:
- nextBoolean()、
- nextByte()、
- nextShort()、
- nextInt()、
- nextLong()、
- nextFloat()、
- nextDouble()。
-
上述方法执行时都会堵塞,程序等待用户在命令行输入数据回车确认。
-
-
输出基本型数据
-
java
使用System
类中的方法实现数据输出- 例如:
System.out.println() //或 System.out.print()
- 输出串值,表达式的值。
- 二者的区别是
- 前者输出数据后换行,
- 后者不换行。
- 如果需要输出的字符串的长度较长,可以将字符串分解成几部分,然后使用并置符号:
+
将它们首尾相接,- 例如:
System.out.println("你好," + "很高兴认识你" );
- 例如:
- 例如:
-
JDK1.5
新增了和C语言
中printf
函数类似的输出数据的方法,格式如下:System.out.printf("格式控制部分",表达式1,表达式2,…表达式n)
- 格式控制部分由格式控制符号:
-
%d
、%c
、%f
、%s
和普通的字符组成,普通字符原样输出。格式符号用来输出表达式的值。%d
输出int
类型数据值;%c
输出char
型数据;%f
输出浮点型数据,小数部分最多保留6
位;%s
输出字符串数据。
-
输出数据时也可以控制数据在命令行的位置,例如:
%md
输出的int
型数据占m
列;%m.nf
输出的浮点型数据占m
列,小数点保留n
位。- 例如:
System.out.printf("%d,%f",12, 23.78);
-
- 格式控制部分由格式控制符号:
-
数组
-
数组是相同类型的数据按顺序组成的一种复合数据类型。
-
通过数组名加数组下标,来使用数组中的数据。
-
下标从0开始排序。
-
声明数组
-
声明一维数组有下列两种格式:
数组的元素类型 数组名[]; 数组的元素类型[] 数组名; float boy[]; char[] cat;
-
声明二维数组有下列两种格式:
数组的元素类型 数组名[][]; 数组的元素类型 [][] 数组名; float a[][]; Char [][] b;
-
-
为数组分配元素空间
-
为数组分配元素的格式如下:
数组名 = new 数组元素的类型[数组元素的个数]; boy = new float[4];
-
说明:
- 数组属于引用型变量,数组变量中存放着数组的首元素的地址,通过数组变量的名字加索引使用数组的元素,比如:
boy[0] = 12; boy[1] = 23.908F; boy[2] = 100; boy[3] = 10.23f;
- 数组属于引用型变量,数组变量中存放着数组的首元素的地址,通过数组变量的名字加索引使用数组的元素,比如:
-
注意:数组的声明和分配空间可以在声明时同时完成:
float boy[] = new float[4];
-
-
数组初始化
-
创建数组后,系统会给数组的每个元素一个默认的值
- 例如,float型是0.0。
-
静态初始化
int[] a = {1,2,3}
-
动态初始化
int[] a = new int[3]; a[0] = 1; a[1] = 2; a[2] = 3;
-
-
数组元素的使用
- 一维数组通过索引(下标运算)符访问自己的元素。
- 如:boy[0],boy[1]等.
- 需要注意的是索引从0开始,
- 因此,数组若有4个元素,那么索引到3为止,如果程序使用了如下语句:
boy[4] = 384.98f;
- 程序可以编译通过,但运行时将发生
ArrayIndexOutOfBoundsException
异常,因此在使用数组时必须谨慎,防止索引越界。
- 一维数组通过索引(下标运算)符访问自己的元素。
-
length
属性的使用-
对于一维数组,
数组名.length
的值就是数组中元素的个数; -
对于二维数组
数组名.length
的值是它含有的一维数组的个数float boy[] = new float[4]; //boy.length的值为4. int[][] a = new int[3][8]; //a.length的值是3. //a[0].length的值是8 //a[1].length的值是8 //a[2].length的值是8
-
-
数组的引用
- 数组属于引用型变量,两个相同类型的数组如果具有相同的引用,它们就有完全相同的元素。
重点和难点
-
重点:标识符、Java语言的数据类型、数组
-
标识符由字母、下划线、美元符号和数字组成,并且第一个字符不能是数字字符(关键字不能做标识符).
-
Java语言有8种基本数据类型(boolean byte short char int long float double)
-
数组是相同类型的数据元素按顺序组成的一种复合数据类型,数组属于引用型变量.
-
两个相同类型的数组如果具有相同的引用,它们就有完全相同的元素。
-
-
难点:基本数据类型的精度和数组
习题
- 问答题
- 什么叫标识符?标识符的规则是什么?false是否可以作为标识符?
- 什么叫关键字?
- java地基本数据类型
- float和double型常量在表示上有什么区别
- 一维数组、二维数组的长度
答案
-
问答题
-
- 标识符:用来标识类名、变量名、方法名、类型名、数组名、文件名的有效字符序列称为标识符。
- 标识符的规则:标识符由字母、下划线、美元符号和数字组成,第一个字符不能是数字。
- false不是标识符。
-
- 关键字:关键字就是Java语言中已经被赋予特定意义的一些单词,不可以把关键字作为名字来用。
- true 和 false 不是关键字。
- 关键字举例:class implements interface enum extends abstract。
-
java的基本数据类型 :boolean,char,byte,short,int,long,float,double。
-
float和double的区别
- float常量必须用F或f为后缀。
- double常量用D或d为后缀,但允许省略后缀。
-
获得数组长度的方法
- 一维数组名.length。
- 二维数组名.length。
-
-
选择题
- 标识符的规则
- 变量的声明
- char型字符在Unicode表中的位置范围是0-65535
- 变量类型转换运算
-
阅读或调试程序
-
【代码1】:4。【代码2】:b[0]=1。
-
【代码1】:40。【代码2】:7
-
-
编写程序
- public class E {
public static void main(String args[]) {
System.out.println((int)‘你’);
- public class E {
System.out.println((int)‘我’);
System.out.println((int)‘他’);
}
}
- public class E {
public static void main (String args[ ]) {
char cStart=‘α’,cEnd=‘ω’;
for(char c=cStart;c<=cEnd;c++)
System.out.print(" "+c);
}
}