目录
1.1 注释
java中的三种注释
1)单行注释
格式://注释内容
2)多行注释
格式:/注释内容/
3)文档注释
格式://*注释内容/
**
1.2 关键字
**
被java语言赋予了特含义的单词。
特点:
1)组成关键字的字母全部为小写。
2)常见的java开发软件对关键字有特殊颜色标记,非常直观。
3)关键字不能作为变量名、方法名、类名、包名和参数
**
1.3 常量概述和分类
什么是常量?
程序执行过程中不能改变的值。
常量分类
1)字符串常量:用双引号括起来的内容(“Hello”)
2)整数常量:所有整数(12,-19)
3)小数常量:所有小数(12.28)
4)字符常量:用单引号括起来的内容(‘a’,‘78’)
5)布尔常量:只有true和false
6)空常量:null
实际应用中常量的特点:
1)实际中常量前可能会有final修饰代表不可修改。
2)实际应用中常量名会大写,如MAX_WRITE
**
1.4 变量概述和定义格式
**
什么是变量?
在程序执行过程中,在约定范围内其值可以发生改变的量;从本质上讲,变量是内存中的一块小区域,用这一块小区域来存储数据。
变量的组成:
1)用数据类型对区域进行限定:草莓的价格只能为数字
2)对区域赋予名称:草莓
3)对区域进行赋值:草莓的价格可变
定义格式
数据类型 变量名 = 变量值;
**
1.5 计算机的存储单位
**
变量是在内存中的一小块区域,用于存储数据。无论是内存还是硬盘,理论上计算机存储单位的最小单元叫“位(bit)”,又称为“比特位”,用小写字母b表示。实际上我们计算机用的最小存储单元叫做“字节(Byte)”,通常用大写字母表示,一个字节是由连续的8个bit组成的。
1B = 8 bit
1KB = 1024B
1M = 1024KB
**
1.6 数据类型概述和分类
**
数据类型:
Java语言是一种强类型的编程语言,对于每一种数据都给出了明确的数据类型,不同的数据类型也分配了不同大小的内存空间,所以它们表示的数据大小也是不一样的。
变量定义的注意事项:
1)变量没有赋值,不能直接使用
2)变量只在它所述的的范围内有效。
3)一行代码可以定义多个变量,但不建议这么使用。
整数类型默认是int类型,浮点数默认用double类型;
定义long类型时,在结尾默认加L或者l,一般用L;
定义float类型时,在结尾默认在F或者f,一般用F。
A基本数据类型
整数:
byte:1字节byte a = 100;
short:2字节short c = 1000;
int:4字节int c = 1000;
long:8字节long d = 10000L;
浮点数:
float:4字节float e = 123.4F;
double:8字节double aa = 123.4;
字符:
char:2字节
布尔:
boolean:1字节boolean bb = true;
B引用数据类型
类:class
接口:interface
数组:[]
**
1.7 标识符的组成和命名规则
**
标识符用于给包,类,方法,变量起名。
1)组成范围:
A数组,大小写英文字母,汉字(一般不用)
B下划线_
C美元符号$
2)注意事项:
A不能数字开头
B不能是java中的关键字
3)常见命名规则:
A基本要求:见名知意
B常见命名
包(就是文件夹,方便对类进行管理)
全部小写,多级包用.隔开
举例:com.han
类
一个单词时首字母大写
多个单词时每个单词的首字母大写
举例:Cat,HelloWorld
方法和变量
一个单词时首字母小写
多个单词组成,从第二个单词每个单词首字母大写
举例:name,insetMax
**
1.8 类型转换
**
一般来讲,参与运算的数据类型要保持一致。类型转换包括
1)隐式转换
在做运算时,一般要求参与运算的数据类型要保持一致
byte short char ----默认转换为int----默认转换为long----float------double
只能往大内存空间转换,否则会损失精度。
public class 类型转换 {
public static void main(String[] args){
int a = 10;
int b =20;
int c = a+b;
System.out.println(c);
}
}
2)强制转换
byte、short、char 参与运算首先转换为int;boolean不参与类型转换;
强制转换格式:
目标类型 变量名 = (目标类型)(被转换的数据);
public class 类型转换 {
public static void main(String[] args){
int e = 20;
byte f = 30;
byte v = (byte)(e + f);
System.out.println(v);
}
}
**
1.9 运算符
**
什么是运算符?
对常量和变量进行代码操作的符号称为运算符。
常用运算符
A算数运算符
+ - * / % ++ --
B赋值运算符
= += -= /= *= %=
C关系运算符
== != > >= < <=
D逻辑运算符
& |或 ^异或 ! && ||
E三元运算符
格式:关系表达式?表达式1:表达式2;
注意事项:
1)要想得到值为小数,需要浮点数类型参与运算,整数类型的运算做的是余数的计算。
2)输出为字符串+基本数据类型,+是作为一个拼接的作用。
3)输出若为字符+基本数据类型,+作为数学运算符进行计算。
4)单独使用:++(–)对变量进行加一(减一)操作,既可以放前面,也可以放后面。
参与运算时:如果++(–)在变量的后面,先拿变量参与运算操作,然后自增(自减);如果++(–)在变量之前,先拿变量进行自增(自减)操作,然后参与运算操作。
public static void main(String[] args){
int a = 10;
int b =20;
a++;//11
++b;//21
int c = a++;//10
int e = ++a;//11
}
5)%:取余数
6)赋值运算符
public static void main(String[] args){
//数据类型 变量名 = 初始化值
int a = 10; //把10赋值给int变量类型a
a += 20;//a=a+20拿+=左边和右边的数据做+,然后把结果赋值给左边 30
a -=5;//a=a-5; 5
a*=a;//a=a*5; 50
byte b = 20;
b+=107;//b = (b的数据类型)(b+107),强制转换为int类型
}
7)关系运算符的结果是布尔类型true和false
8)逻辑运算符用于连接关系表达式,如3<x<5在java中表示为x>3&&x<5;&&具有短路效果,左边一旦条件不满足就不进行右边的操作,&无论左边结果如何都会对符号右边进行操作。||和&&的效果一样。
9)三元运算符的执行流程为:先计算关系表达式的结果,如果结果为true,就把表达式1作为返回结果;如果结果为false,就把表达式2作为返回结果。
public static void main(String[] args){
int c = 10;
int e = 20;
int g = (c>e)?c:e;
System.out.println(g);
}
**
1.10 流程控制
**
流程控制语句分为顺序结构,选择结构,循环结构。
1)顺序结构
什么是顺序结构?就是按照代码的先后顺序,依次执行的代码结构。编程语言中大多数代码都是按照顺序结构执行的。
2)选择结构
具有特定的语法格式,按照该特定语法结构执行的语句代码。java中提供两种选择语句结构,一是if语句,而是switch语句。
A if语句格式1
if(关系表达式){
语句体;
}
public class liuchengkongzhi1 {
public static void main(String[] args){
int a = 10;
int b = 20;
if(a == b){
System.out.println("两个数相等");
}
System.out.println("两个数不相等");
}
}
B if语句格式2
if(关系表达式){
语句1;
}else{
语句2;
}
C if语句格式3
if(关系表达式1){
语句1;
}else if(关系表达式2){
语句2;
}...{
语句n;
}else{
语句n+1;
}
D switch语句格式
当所有case中的值都不匹配,就执行default中的值。
switch(表达式){
case值1:
语句1;
break;
case值2:
语句2;
break;
...
default:
语句n;
break;
}
3)循环结构
在代码编写过程中,有时候需要反复执行某一段代码,这就需要用到循环结构。java提供for循环,while循环,do while循环。循环语句一共包括四个部分:
A初始化语句
一般由一条语句完成初始化操作(例如:int a = 1)
B判断条件语句
是一个由boolen表达式判断是否执行循环体
C循环体语句
循环执行部分,需要多次执行的代码
D控制条件语句
在一次循环代码结束后,下一次判断条件语句执行前执行。控制循环条件中变量,是循环语句在合适的时候结束。若没有则变为死循环
(1)for循环语句
for(初始化语句;判断条件语句;控制条件语句){
循环体语句;
}
示例:
for(int i = 0; i<10;i++){
System.out.println("HelloWorld!"+i);
}
(2)while循环语句
while(判断条件语句){
循环体语句;
}
示例:
int a = 0;
int b = 0;
while(a<=10){
b = b + a;
a++;
}
System.out.println(b);
(3)do while循环
初始化语句;
do{
循环体语句;
控制条件语句;
}while(判断条件语句);
示例:
int d = 0;
int f = 0;
do{
f = f + d;
d++;
}while(d<=10);
System.out.println(f);
(4)三种循环的区别
A)do while循环至少会执行一次循环语句
B)for循环和while循环必须满足判断条件语句后才会执行循环语句,即可以执行0次循环体
C)for循环结束后,初始化的变量就不可使用,while循环结束后,初始化变量还可以使用
**
1.11 跳转控制语句
**
在循环语句执行过程中,若想提前结束或者跳过某一次循环,就需要用到跳转控制语句。包括下面两类:
1)break中断
2)continue跳过当前这次循环
**
1.12 数组概述和定义
**
数组是在程序设计中,为了处理方便,把具有相同类型的若干元素按有序的形式组织起来的一种形式。这些有序排列的同类数据元素的集合称为数组,即数组是用于储存多个相同类型数据的集合。数组可以储存基本数据类型也可以储存引用数据类型。以下为数组的两种定义格式:
1)数据类型[]数组名;(这种格式较为常用)
int [] arr;
2)数据类型 数组名 [];
int arr [];
数组的初始化即是为数组开辟内存空间,并为数组中的每个元素赋予初始化值。数组的初始化又分为:
1)动态初始化
只需要给出数组的长度,系统会默认给出初始化值
数据类型 [] 数组名 = new 数据类型[数组长度];
int [] arr = new int [10];
把同一个地址空间分配给两个数组。
public class Arrydemo {
public static void main(String[] args){
int []arry = new int [3];
arry[0] = 10;
arry[1] = 20;
arry[2] = 30;
System.out.println(arry);
System.out.println(arry[0]);
System.out.println(arry[1]);
System.out.println(arry[2]);
System.out.println("===============");
int []arry2 = arry;
System.out.println(arry);
System.out.println(arry[0]);
System.out.println(arry[1]);
System.out.println(arry[2]);
System.out.println("===============");
System.out.println(arry2);
System.out.println(arry2[0]);
System.out.println(arry2[1]);
System.out.println(arry2[2]);
}
}
2)静态初始化
直接给出初始化值,由数组系统决定长度。
数据类型[]数组名 = new 数据类型[]{元素1,元素2,元素3…};
数据类型[]数组名 = {元素1,元素2,元素3…};
int[]array = new int[]{1,2,3};
访问数组中元素的方式为:数组名[索引值]。其中索引值是从0开始到数组长度值-1。
int [] arr = new int [10];
System.out.println(arr);//直接输出数组名获取的是数组的地址值如下所示为[I@6d06d69c,该地址值为系统分配的。
System.out.println(arr[0]);
使用数组常见的两个问题:
A数组索引越界异常:访问了超出不存在的索引值。
B空指针异常:数组已经不指向堆内存的数据了,但依然使用数组名去访问元素。
数组的遍历
public class Arrydemo {
public static void main(String[] args){
int []arry = new int [3];
arry[0] = 10;
arry[1] = 20;
arry[2] = 30;
for(int i=0;i<arry.length;i++){
System.out.println(arry[i]);
}
}
}
**
1.13 java中的内存分配
**
Java执行过程中,为了提高运算效果需要在内存中分配空间,对内存空间进行了不同区域的划分,每一片区域都有特定的处理数据的方式和内存管理方式,分工产生效能。
A栈:储存局部变量(定义在方法中的变量)
B堆:储存new出来的东西
C方法区:面向对象
D本地方法区:和系统相关
E寄存器:给CPU使用
把同一个地址空间分配给两个数组。
public class Arrydemo {
public static void main(String[] args){
int []arry = new int [3];
arry[0] = 10;
arry[1] = 20;
arry[2] = 30;
System.out.println(arry);
System.out.println(arry[0]);
System.out.println(arry[1]);
System.out.println(arry[2]);
System.out.println("===============");
int []arry2 = arry;
System.out.println(arry);
System.out.println(arry[0]);
System.out.println(arry[1]);
System.out.println(arry[2]);
System.out.println("===============");
System.out.println(arry2);
System.out.println(arry2[0]);
System.out.println(arry2[1]);
System.out.println(arry2[2]);
}
}
**
1.14 二维数组的概述和基本使用
**
二维数组本质上是以数组作为数组元素的数组,即“数组的数组”,类型说明符 数组名[常量表达式][常量表达式]。二维数组又称为矩阵,行列数相等的矩阵称为方阵。对称矩阵a[i][j] = a[j][i],对角矩阵:n阶方阵主对角线外都是零元素。
1)共有三种定义格式:
A数据类型[][]数组名;-------这种为常用的格式
B数据类型 数组名[][];
C数据类型[]数组名[];
2)二维数组的初始化:
A静态初始化
数据类型[][]数组名 = new数据类型[][]{{元素…},{元素…},…};
数据类型[][]数组名 = {{元素…},{元素…},…};
B动态初始化
数据类型[][]数组名 = new 数据类型[m][n];
m代表的是二维数组中的一维数组的个数
n代表的是一维数组中的元素个数
3)二维数组的存储
public class Twoarray {
public static void main(String[] args){
int array[][] = {{1,2,3},{4,5,6},{7,8,9}};
System.out.println(array);//指向二维数组的存储空间[[I@15db9742
System.out.println(array[0]);//指向二维数组里面的一维数组的存储空间[I@6d06d69c
System.out.println(array[1]);//指向二维数组里面的一维数组的存储空间[I@7852e922
System.out.println(array[0][1]);//指向二维数组中的元素
}
}
4)二维数组的遍历
public static void main(String[] args){
int [][]arry = {{1,2,3},{4,5,6},{7,8,9,10}};
for(int i=0;i<arry.length;i++){
for(int j=0;j<arry[i].length;j++){
System.out.print(arry[i][j]);
}
System.out.println();
}
}
**
1.15 可变参数
**
-
应用场景
当参数不确定的时候, 类型要明确。
Java可以把多个参数直接帮我们转成数组。
理解: 可变参数本质就是一个长度可变的数组。 -
格式
实参: 一个参数一个参数的传递
形参: 类型…变量名 -
示例
Public static int getSum(int…num){
int sum = 0;
for(int i = 0; i < num.length; i++){
sum+=num[i];
}
return sum;
}