Java语言程序设计(第三版)
这里接上一篇 第二章 面向对象程序设计基本概念
JAVA期末复习知识点总结(二)
第三章 Java语言基础
1.标识符
1.1标识符定义规则
- 标识符包括 变量名,类名,方法名
- 以字母,下划线,或$开头,后面可以跟字母、下划线、美元符、数字
- 数字不能作为标识符的第一个字符
- 标识符不能是Java语言的关键字
- 大小写敏感,且长度没有限定
举例
合法举例:userNme / user_name / _sys_varl / $change
非法举例:3line / class / room# / *point
1.2风格约定
- 方法名使用动词(动名词),类名与接口名使用名词,如draw、Circle
- 变量名、方法名首单词小写,其余单词只有首字母大写,如 anyVariableWorld、userName、findByName
- 接口名、类名首单词第一个字母大写,如HelloWorld、UserDAO
- 常量:完全大写 ,如:PI、MAX、COUNT_SIZE
- 注释:// 注释一行
/* */ 注释一行或多行
/ * * */ 可用javadoc命令转化为HTML文件 (javadoc是JDK中API文档生成器)
1.3 关键字及分类
2.数据类型
2.1基本数据类型
2.2整数类型
-
8位=1字节
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/d309da1fc58ea9873f1fc2c399a19e2f.png)
2.3浮点型
- .
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/7076f48791f0c02247694fa3c10ba44c.png)
3.运算符与表达式
3.1 运算符与表达式
与C不同
- Java是
强制型语言
,类型限制比C严格多,运算符的操作对象的类型会受到更多限制- Java不提供指针运算符,增加了对象操作符 instanceof ,字符串
运算符+
和零填充的右移>>>
等。
- 算术运算操作符:+,-,*,/, %, ++, - -
- 关系操作符:>, >=, < ,<=, ==, !=
- 位操作符:>>, <<, >>>, & , |, ^(逐位异或),~ (按位取反)
- 逻辑操作符:& , | , !, ^(异或), &&, ||
- 赋值操作符:=, +=, -=, *=, /=, %=,&=, |=, ^=, <<=, >>=, >>>=
- 其它操作符: ?: , [], . , ( ),(type), new, instanceof
3.2 算术操作符
3.3 +运算符
连接字符串
public class TestOperator {
public static void main(String[] args) {
String salutation = "Dr.";
String name = "Pete" + "Seymour";
String title = salutation + name;
System.out.println("title的值为:"+ title);
}
}
运行结果
+是 “加号” 还是 “连接符”?
先看几行代码(答案在后面)
System.out.println('a');
System.out.println('a'+1);
System.out.println("hello"+'a'+1);
System.out.println('a'+1+"hello");
System.out.println("5+5="+5+5);
System.out.println(5+5+"=5+5");
答案:
System.out.println('a'); //a
System.out.println('a'+1); //98
System.out.println("hello"+'a'+1); //helloa1
System.out.println('a'+1+"hello"); //98hello
System.out.println("5+5="+5+5); //5+5=55
System.out.println(5+5+"=5+5");//10=5+5
//字符串数据和其他数据做”+ ”运算,结果是字符串类型,这里的+是”字符串连接符”。
3.4 位操作符
对于任何一种整数类型数值,可以直接使用位运算符对这些组成整数的二进制位进行操作。
位逻辑运算符
移位运算符
逻辑操作符
public class TestOperator {
public static void main(String[] args) {
int a=1;
int b=2;
boolean result =((a=9+3)<10) &&((b=8-3)>4);
System.out.println("result=" + result);
System.out.println("a=" + a);
System.out.println("b=" + b);
}
}
运行结果
赋值运算符
递增(减)运算符
public class TestOperator {
public static void main(String[] args) {
int a=10;
System.out.println(a++); //10
System.out.println(a); //11
System.out.println(a--); //11
System.out.println(a); //10
System.out.println(++a); //11
System.out.println(a); //11
System.out.println(--a); //10
System.out.println(a); //10
}
}
强制类型转换
- 一般形式:(type) expression
例:double a = 3.14;
int b =(int) a;- 对强制类型转换的限制:
整型与浮点型可以相互转换,但基本类型和数组、对象等复合类型之间不能互相转换。
4. 程序流控制
程序流控制语句可以是程序运行时,有条件的执行或重复执行某些语句,改变程序正规的顺序执行流向。Java语言提供了如下4类程序流控制语句:
- 循环语句:包括while语句、do while语句和for语句。
- 分支语句:包括 if 语句和switch语句。
- 跳转语句:包括break语句,continue语句,label语句,return语句。
- 异常处理语句:包括 try catch finally语句和throw语句。
4.1while和do while语句
while循环
do while循环
两种循环比较
4.2 for循环
4.3 if else语句
4.4switch语句
表达式必须是一个整数,值是一个整数的类型有:byte,short,int,char而浮点型(float,double)或long型则不行;
常量表达式中不能出现变量;
当常量表达式的值跟switch表达式值相等时,就从该case语句开始执行,直到遇到break语句为止;
Switch可以用if else if结构来实现,switch语句简单结构性强,但数据类型受到了限制。
4.5 循环跳转语句
Java中可以用break和continue两个循环跳转语句进一步控制循环
5.数组
5.1数组的声明
可以声明任何类型数组,包括基本类型和类类型数组。
数组声明和其他类型的变量声明一样,包括两部分:数组的类型和数组的名字
- 将表示数组的 [ ] 跟随在数组变量之后。
这种格式是C, C++和Java的标准格式。例如:
char s [ ];
Point p[ ]; //Point 是一个类- 将表示数组的“[ ]”跟随在数组类型之后。
这种格式是Java特有的
。例如:
char [ ] s;
Point [ ] p;
这种格式中,在数组标志“[ ]”后出现的所有变量都将是数组变量。例如:
char [ ] s,m,n; //声明了三个字符数组变量s,m,n
注意:在数组的声明中不指定数组长度。
在Java中数组是作为类来处理的。在Java中类类型变量的声明并不创建该类的对象。所以数组的声明并不创建实例数组的数据空间,而是给该数组变量分配一个可用来引用该数组的引用空间。
5.2 数组的创建与初始化
5.2.1用new创建数组
数组的所有元素所需的内存空间是通过new运算符或通过数组初始化分配的。通过new运算符创建数组格式如下:
new elementType[arraySize]
5.2.2静态初始化
静态是在程序编译时就初始化好了的,动态初始化是在程序运行是才动态分配内存空间。
5.2.3动态初始化
5.2.4数组的长度
Java中为所有数组设置了一个表示数组元素个数的特性变量length,它作为数组的一部分存储起来。
- Java用length变量在运行时进行越界检查,应用程序中也可以访问该变量获取数组的长度,格式 :arrayname.length
- 数组在创建后长度是不可变的。因此不能改变数组的长度,但可以用该数组变量指向另一个全新数组,则通过该变量将不能访问原来的数组值,例如:
int a[] = new int [6];
a[0] = 10;
……
a = new int [10];//不用再次声明a,此时a[0]的值为0,而不是10
……
5.2.5对象数组
除了创建基本类型数组,还可以创建对象数组。例如,下列语句声明并创建了一个Point类型的数组:
Point p[];
p=new Point[10]; //创建包含10 个Point类型对象应用数组
//创建10个Point对象
for(int i=0;i<10;i++){
p[i]=new Point(i,i+1);
}
上述语句执行后,数组p在内存中的布局如下图所示:
5.3 多维数组
Java语言的多位数组可以看做是数组的数组,即n维数组是n-1维数组的数组。
5.3.1多维数组的声明
多维数组的声明格式与一维数组类似,只要用多对[ ]表示数组的维数,一般n维数组要用n对[ ]。例如二维:
int a [ ] [ ] ;
int [ ] [ ] a;
这两条语句等价。
5.3.2多维数组的应用
题目:
public class ArrayTest {
public static void main(String[] args) {
int[][] a={{35,82,13,10},{12,19,5,55},{67,98,72,10}};
int max,min;
max=min=a[0][0];
for(int i=0;i<3;i++){
for(int j=0;j<4;j++){
if (max<a[i][j]){
max=a[i][j];
}
if(min>a[i][j]){
min=a[i][j];
}
}
}
System.out.println("数组中最大的元素值是:"+max);
System.out.println("数组中最大的元素值是:"+min);
}
}
5. 4 增强的for循环
在JDK5.0以后,为了便于数组的集合(collections)中的元素进行迭代处理,Java中引用了一种增强的for循环形式,其定义如下
for(类型 标识符 :可迭代类型的表达式) 语句;
其中,括号中的“类型 标识符”
指定了一种类型的标识符,该标识符的类型应与冒号后面的表达式的类型兼容。
"可迭代类型表达式"
一般是数组或集合,“:”
可理解为in。
例如:
int [] numbers = {1,2,3,4,5,6,7,8,9,10};
for(int element : numbers) {
System.out.println(element);
}
上述for循环课被读为:
for each element in numbers do {……}
5. 5 数组的复制
数组变量之间赋值是引用赋值,不能
实现数组数据的复制,如下:
int a[ ] = new int [6];
int b = [ ];
b=a;
进行数组数据复制,要是用Java语言在java.lang.System类中提供的数组复制方法。该方法定义如下:
public static void arraycopy(Object source,
int srcIndex,
Object dest,
int destIndex,
int length)
其中: source —— 源数组;srcIndex —— 源数组开始复制的位置;dest —— 目的数组;destIndex —— 目的数组开始存放复制数据位置;length —— 复制元素的个数。
例题:
数组的复制拓展
import java.util.Arrays;
public class TestArray {
public static void main(String[] args) {
int[] a = {10,20,30,40,50};
int[] b = Arrays.copyOf(a, 3);
int[] c = Arrays.copyOfRange(a, 1,5);
int[] d = new int[3];
System.arraycopy(a, 1, d, 0, 3);
System.out.println(Arrays.toString(a));
System.out.println(Arrays.toString(b));
System.out.println(Arrays.toString(c));
System.out.println(Arrays.toString(d));
}
}
输出结果: