1 Java语言基础组成
- 关键字
- 标识符
- 注释
- 常量和变量
- 运算符
- 语句
- 函数
- 数组
1.1 关键字
定义:被Java语言赋予了特殊含义的单词
特点:关键字中所有字母都为小写
例如:
public、class 、interface 、byte、 short、 int等等这些被Java语言赋予了特殊含义的单词
1..2 标识符
其实就是在程序中自定义的名词。比如类名,变量名,函数名。
由26个英文字母大小写,数字:0-9 符号:_ $ 组成。
注意定义合法标识符规则:
1)数字不可以开头。
2)不可以使用关键字。
1.3 注释
定义:用于注解说明解释程序的文字就是注释。
提高了代码的阅读性。
Java中的注释格式:
• 单行注释
格式: //注释文字
• 多行注释
格式: /* 注释文字*/
• 文档注释
格式:/* 注释文字 /
1.4 常量和变量
1.4.1 常量:表示不能改变的数值。
1.4.2 变量 :
其实就是内存中的一个存储空间,用于存储常量数据。
作用:方便于运算。因为有些数据不确定。所以确定该数据的名词和存储空间。
特点:变量空间可以重复使用。
1)什么时候定义变量?只要是数据不确定的时候,就定义变量。
2)定义变量的格式:
• 数据类型 变量名 = 初始化值;
3)数据的类型
1:基本数据类型:byte、short、int、long、float、double、char、boolean
2:引用数据类型: 数组、类、接口。
4)数据类型转换
自动类型转换:
两种类型兼容
例如:int 和 double 兼容
目标类型大于源类型
例如:double 型 大于 int 型
强制转型 :
目标类型小于源类型 丢失精度
例如:int 型小于double 型
1.5 运算符
是通过一定的运算规则操作一个或多个操作数,并生成结果的特定符号。
Java提供了一系列丰富的运算符,包括:
1、算术运算符
”- ++、–、+、-、*、/、%“
2、比较运算符
“== 、!= 、> 、>=、 <、 <=”
3、逻辑运算符
“&”和“&&”的区别:
• 单&时,左边无论真假,右边都进行运算;
• 双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。
“|”和“||”的区别同理,双或时,左边为真,右边不参与运算。
异或( ^ )与或( | )的不同之处是:当左右都为true时, 结果为false。
4、位运算符
“<<” 空位补0,被移除的高位丢弃,空缺位补0。
“>>” 被移位的二进制最高位是0,右移后,空缺位补0;最高位是1,空缺位补1。
“>>>” 被移位二进制最高位无论是0或者是1,空缺位都用0补。
5、赋值运算符
= , +=, -=, *=, /=, %=
6、三元运算符
格式
• (条件表达式)?表达式1:表达式2;
• 如果条件为true,运算后的结果是表达式1;
• 如果条件为false,运算后的结果是表达式2;
1.6 语句
if、 switch、 do while、 while 、for
这些语句什么时候用?
当判断固定个数的值的时候,可以使用if,也可以使用switch。
但是建议使用switch,效率相对较高。
工作原理:用小括号中的变量的值依次和case后面的值进行对比,和哪个case后面的值相同了
就执行哪个case后面的语句,如果没有相同的则执行default后面的语句;
细节:
1:break是可以省略的,如果省略了就一直执行到遇到break为止;
2:switch 后面的小括号中的变量应该是byte,char,short,int四种类型中的一种;
3、当判断数据范围,获取判断运算结果boolean类型时,需要使用if。
4、当某些语句需要执行很多次时,就用循环结构
while和for可以进行互换。
区别在于:如果需要定义变量控制循环次数。建议使用for。因为for循环完毕,变量在内存中释放。
break:作用于switch ,和循环语句,用于跳出,或者称为结束。
break语句单独存在时,下面不要定义其他语句,因为执行不到,编译会失败。当循环嵌套时,break只跳出当前所在循环。要跳出嵌套中的外部循环,只要给循环起名字即可,这个名字称之为标号。
continue:只作用于循环结构,继续循环用的。
作用:结束本次循环,继续下次循环。该语句单独存在时,下面不可以定义语句,执行不到。
Demo练习使用for 语句打印等腰三角形
public class Test {
public static void main(String[] args) {
for (int i = 0; i < 5; i++) {
for (int j = i+1; j < 5; j++) {
System.out.print(" ");
}
for (int j = 0; j <= i; j++) {
System.out.print("* ");
}
System.out.println();
}
}
}
1.7 函数
为了提高代码的复用性,可以将其定义成一个单独的功能,该功能的体现就是java中的函数。函数就是体现之一。
java中的函数的定义格式:
修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数1,…){
执行语句;
return 返回值;
}
当函数没有具体的返回值时,返回的返回值类型用void关键字表示。
如果函数的返回值类型是void时,return语句可以省略不写的,系统会帮你自动加上。
return的作用:结束函数。结束功能。
如何定义一个函数?
函数其实就是一个功能,定义函数就是实现功能,通过两个明确来完成:
1、明确该功能的运算完的结果,其实是在明确这个函数的返回值类型。
2、在实现该功能的过程中是否有未知内容参与了运算,其实就是在明确这个函数的参数列表(参数类型&参数个数)。
函数的作用:
1、用于定义功能。
2、用于封装代码提高代码的复用性。
注意:函数中只能调用函数,不能定义函数。
函数定义名称是为什么呢?
答:1、为了对该功能进行标示,方便于调用。
2、为了通过名称就可以明确函数的功能,为了增加代码的阅读性。
重载的定义是:
在一个类中,如果出现了两个或者两个以上的同名函数,只要它们的参数的个数,或者参数的类型不同,即可称之为该函数重载了。
如何区分重载:当函数同名时,只看参数列表。和返回值类型没关系。
例如:
//返回两个整数的和
int add(int x,int y){return x+y;}
//返回三个整数的和
int add(int x,int y,int z){return x+y+z;}
//返回两个小数的和
double add(double x,double y){return x+y;}
1.8 数组
用于存储同一类型数据的一个容器。
好处:可以对该容器中的数据进行编号,从0开始。数组用于封装数据,就是一个具体的实体。
如何在java中表现一个数组呢?两种表现形式。
1、元素类型[] 变量名 = new 元素类型[元素的个数];
2、元素类型[] 变量名 = {元素1,元素2…};
元素类型[] 变量名 = new 元素类型[]{元素1,元素2…};
数组的内存机构:
Java程序在运行时,需要在内存中的分配空间。为了提高运算效率,有对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。
栈内存:
用于存储局部变量,当数据使用完,所占空间会自动释放。
堆内存:
数组和对象,通过new建立的实例都存放在堆内存中。
每一个实体都有内存地址值,实体中的变量都有默认初始化值,实体不在被使用,会在不确定的时间内被垃圾回收器回收
练习Demo 实现数组排序
public class Demo{
public static void main(String[] args) {
int[] arr = {7,1,5,4,2,8,9};
for(int x=0; x<arr.length-1; x++){
for(int y=0; y<arr.length-x-1; y++){//-x:让每一次比较的元素减少,-1:避免角标越界。
if(arr[y]<arr[y+1]){
int temp = arr[y];
arr[y] = arr[y+1];
arr[y+1] = temp;
}
}
}
System.out.print("[");
for(int x=0; x<arr.length; x++)
{
if(x!=arr.length-1){
System.out.print(arr[x]+", ");
}else{
System.out.println(arr[x]+"]");
}
}
}
}