java的出现标志着真正的分布式系统的到来
Java中没有全局变量,使用类中的公共的静态变量作为这个类
的全局变量
Java中没有任何在指针操作
Java中没有goto语句,通过异常处理机制try-catch-finally来代替
Java拥有内存回收机制,保证了系统资源的完整性,能够自动回收长时间不使用的文件
对数据类型的位数分配是固定的
在Java语言中对对象的处理进行严格的相容性检查,防止不安全的转换
Java不支持头文件、结构、联合、预处理(宏定义)
简单性。完全面向对象、平台无关性、安全性(严密的语法检查、内存自动管理),多线程
首先编写Java源程序(后缀名为.java),然后进行编译(检查语法格式),会生成一个字节码
文件,字节码文件可以在任何装有Java虚拟机的平台运行(保证了其平台无关性)
标识符:由字母、数字、下划线、$组成,不能以数字开头
一个Java源文件内可以有多个类,但至多有一个public类,且public类的源文件名必须与这个类的名字相同,若没有public类,则源文件名随意
1、整数类型:byte,short,int,long
2、浮点类型:float,double
3、字符类型:char
4、布尔类型:boolean
数组、类、接口
基本数据类型的变量保存数据值,引用数据类型的变量保存地址
数据类型 | 关键字 | 所占字节 |
---|---|---|
布尔型 | boolean | 无明确规定 |
字节型 | byte | 1个字节 |
短整型 | short | 2个字节 |
整型 | int | 4个字节 |
长整型 | long | 8个字节 |
字符型 | char | 2个字节 |
单精度浮点型 | float | 4个字节 |
双精度浮点型 | double | 8个字节 |
Java语言的整型常量默认为int类型
eg.1e3、1.e3、.e3
浮点型实型常量不带后缀默认为双精度常量
true,false
用单引号‘’括起来
用双引号" "括起来
// 变量格式
数据类型符 变量列表 [=初始值]
//eg.
int i;
long k = 1;
double x , y = 1;
如果变量未初始化就进行输出,会编译错误
变量说明确定了:该变量占用内存单元的数量、数据在内存的表示方式、数据的取值范围
// 定义形式
[static] final 数据类型 标识符 [= 常量]
最终变量
:只能赋值一次
最终变量 != 常量
// 1.一次只能读入一个字节
System.in.read()
// 2.JOptionPane.showInputDialog
对话框界面,返回结果为String类型
// 3.Scanner 类
Scanner scan = new Scanner(System.in)
java可以自动完成级别低的变量向级别高的变量的转换
但级别高的变量向级别低的变量转换时,需要使用显示类型转换运算
byte、short、char在一起运算时,会首先转换为int类型进行运算
byte b1 = 5;
short s1 = 6;
short s2;
s2 = b1 + s1; // 产生错误
复合运算“+=、-=、*=、/=、%=” 会自动进行类型转换,不需要强制类型转换
short s = 3;
int t = 5;
s += t; //正确
s = s + t; //错误
%运算符其操作数可以是浮点数
+可用来连接两个字符串
System.out.print(1+1+"6") //26
System.out.print("6"+1+1) //611
整数被0除会产生异常,浮点数被0除将会得到无穷大或NaN
名称 | 符号 |
---|---|
大于 | > |
大于等于 | >= |
小于 | < |
小于等于 | <= |
等于 | == |
不等于 | != |
返回boolean类型的数据
名称 | 符号 | 说明 |
---|---|---|
非 | ! | !真为假,!假为真 |
与 | && | 两个都为真时为真,否则为假 |
或 | || | 有一个为真则真 |
异或 | ^ | 两个数不同时为真 |
当&&第一个变量为假时,会直接跳出该条件判断,不会进行第二个变量的计算
当||第一个变量为真时,会直接跳出该条件判断,不会进行第二个变量的计算
自上而下
// if-else / if-else if……else 语句
if(逻辑表达式、条件判断)
执行语句
else if(判断条件)
执行语句
………………
else
执行语句
// switch 语句
switch(表达式)
{
case 常量表达式1;语句序列1;break;
case 常量表达式2;语句序列2;break;
case 常量表达式3;语句序列3;break;
……
default:语句序列
}
/*
switch 的语句判断条件可以接受 byte、short、int、char、String、枚举类型
各常量表达式的值不能相同,不能包含变量贺函数调用
switch 会顺序查找,知道找到第一个匹配的case值,开始顺序执行后面所有的语句,直到遇到break
*/
if
: 用于对一个表达式的值进行判断
switch
: 用于对几个确定的值进行判断
逻辑表达式1 ? 表达式2 : 表达式3
// eg.
max = ( x > y ) ? x : y; // 返回较大的值
//语句格式
while(逻辑表达式)
{
循环体
}
//语句格式
do{
循环体;
}
while(判断条件);
// 语句格式
for(表达式1;表达式2;表达式3)
{
语句块;
}
//语句格式
for(变量:集合)
{
循环体
}
// eg.
int[] a = new int[11];
for(int element:a)
{
System.out.println(element);
}
类型 | 说明 |
---|---|
break | 结束此循环,跳出循环体 |
continue | 结束本次循环,进行下一次循环 |
数组是具有相同数据类型
的有限个
同名变量的有序
集合,每一个数据被称为该数组的元素
下标从0开始
通过数组名加数组下标来使用数组中的数据
//声明数组的格式
// 1
数组元素类型 数组名[];
int a[];
// 2
数组元素类型[] 数组名;
int[] a;
//格式
// 1
数组元素类型[] 数组名 = new 数组元素类型[数组元素个数];
int[] a = new int[10];
// 2
数组元素类型[] 数组名;
数组名 = new 数组元素类型[数组元素个数]
int[] a;
a = new int[10];
声明数组是在栈中分配一个地址,仅仅是给出了数组名和元素的数据类型,无法正常使用
,此时调用会报错
必须
要在堆空间中为其分配一个空间,即使用new申请一个空间(在堆中的数据有默认值)
在栈中的数据没有默认值
变量可以出现的地方数组元素都可以出现
可以使用 数组名.length
得到数组中元素的个数
必须先定义一个数组(声明+创建)才能使用
数组是一个指针,指向一个堆的空间
// 在定义数组的同时就位数组元素分配空间并赋值
int[] a = {3,5,8}; //不能指定数组的大小
// 数组声明和为数组元素分配空间并赋值的操作分开进行
// 方法一
int[] a = new int[3];
a[0] = 3, a[1] = 5, a[2] = 8;
// 方法二
int[] a = new int[]{3,5,8}; //此方法无法指定长度
// eg.
int[][] a = new int[2][];
a[0] = new int[3];
a[1] = new int[7];
public class Main {
public static void main(String[] args) {
float[] a = new float[12];
int [][] b = new int[3][6];
System.out.println(a.length); //12
System.out.println(b.length); //3
System.out.println(b[0].length); //6
}
}
实现特定功能、可被调用并能返回值的程序段
避免了重复性操作、有利于模块化设计
// 格式
[修饰符] [static] 返回值类型 方法名([参数列表]){
语句序列;
[return [返回值]];
}
有static
修饰的方法
Java规定,所有类型的参数传递都是“值传递”,但是传递引用类型参数时,相当于创建了一个指向内存地址的变量,通过修改该地址的值来实现引用修改
一个类中有多个同名方法但带有不同的参数列表,称为方法的重载
重载方法必须在参数列表
加以区分,不能通过返回值类型进行区分