关于java计算机语言:人与计算机之间进行信息交流沟通的一种特殊语言Java编程语言是人与计算机沟通最优秀的语言之一1995年Java由sun公司推出,1996年推出第一个版本,Java之父是詹姆斯高斯林2004年的Java5.0因为更新较大,所以长时间被企业使用,改名成JAVAEE、JavaSE、JavaME。2009年sun公司因管理不善被Oracle收购,我们现在可以在Oracle官网获取最新版本的Java版本https://www.oracle.com 。2014年Oracle推出第一个LST版本Java——Java8.0。是目前企业流行版本。之后Java每半年推出一个版本,最新版本为2019年3月份发布的java12。不建议更新。Java之所以优秀,被企业推崇,源自于其本身的很多优点,像跨平台、安全、对高并发支持很好等等
运算符&表达式 运算符其实就是一些符号(eg:+ - * /) 表达式用运算符连接起来的一些式子,成为表达式。如果用算术运算符连接起来,就是算术表达式
1. 算术运算符+ - * / %整数相除结果只能是整数 %取余,结果是余数 自动类型提升:
基本数据类型(boolean除外)进行算术运算时,会有自动类型提升:
a. byte、short、char参与运算时,会自动转换成int类型,然后再进行运算
b. 在算术表达式中,讲数据类型转换成参与运算的所有数据中的最高级别。(byte/short/char<int<long<float<double)
字符串相+ 其实就是字符串的拼接
从左往右依次执行,在遇到字符串之前,会找原有的规则进行运算。
如果遇到了字符串,就开始进行字符串拼接。自增/自减运算符 ++/-- 变量增加/减少1使用: 单独使用 在前或在后,对运算结果没有影响 参与运算 自增或自减在前,先进行自增减然后再参与其他运算 自增或自减在后,先进行其他运算,然后再进行自增减
2.赋值运算符 = int i = 10; //将10赋值给int类型的变量i i = i + 20; //将i的值加上20之后,重新赋值给变量i
复合赋值运算符
+=、-=、*=、/=、%=
i += 10; //在结果上等同于i = (i的类型)(i +10);
一般不建议使用强转,建议使用复合赋值运算符
3.关系运算符
关系表达式的结果只能是boolean类型,也就是只能是true或者false ==、>、<、>=、<=、!=
不要将==错写成了= System.out.println(i=j+k),把j的值赋值给变量i,并且输出
4. 逻辑运算符 连接了两个及以上的关系表达式 &、|、^、!
& 与 并且 只要有false,结果就是false,同时为true,结果才是true | 或 或者 只要有true,结果就是true;同时为false,结果才是false
^a异或 男女关系 相同为false,不同为true
! 非 否定 !true = false, !false=true; !!true = true;
短路逻辑运算符
&& 短路与 只要遇到false,后面的关系表达式便不执行
|| 短路或 只要遇到true,后面的关系表达式便不执行
工作中常用的是 &&、||、!
5. 三元运算符
格式:关系表达式 ? 表达式1 : 表达式2
示例: a > b ? c : d
执行流程:
判断关系表达式的值如果该值为true,三元表达式的值就是表达式1的值
如果该值为false,三元表达式的值就是表达式2的值
6. 键盘录入的三个步骤
导包 import java.util.Scanner; 创建对象 Scanner sc = new Scanner(System.in);
接收数据 int i = sc.nextInt();
7. if语句格式1
if(关系表达式){
语句体
}
执行流程
1. 判断关系表达式的值
2. 如果关系表达式的值为true,就执行语句体,然后继续执行后面的其他代码
3. 如果关系表达式的值为false,就不执行语句体,接续执行后面的其他代码
8. if语句格式2
if(关系表达式){
语句体1;
} else {
语句体2;
}
9. if语句格式3
if(关系表达式1){
语句体1;
}else if(关系表达式2){
语句体2;
}
……
else{
语句体n+1;
}
10 switch
语句格式:
switch(表达式){
case 值1:
语句1;
break;
case 值2:
语句2;
break;
……
default:
语句n+1;
[break;]
}
表达式结果的类型:byte、short、char、int、枚举、String
执行流程:
计算表达式的值,然后从上往下和各个case后面的值进行比对,只要发现相同,就执行该case的语句,遇到break,switch语句结束;如果所有的case都不匹配,执行default的语句。
case穿透
如果某个case内没有break,在执行该case内语句后,并不会再次判断后面case的值是否匹配;
而是直接执行后面case中的语句,直到遇到break或者语句结束。
11. 循环结构可以通过
for while do…while
实现
12. 数组
a 概念:存储多个同一类型数据的容器(内存空间)
b 格式:数据类型[] 变量名;(不推荐:数据类型 变量名[])
c 数组的初始化
数据需要先初始化后使用(变量也是一样)
初始化的工作:
a). 开辟内存空间
b). 为数组中元素赋值
数组初始化方式:
a) 动态初始化(指定数组长度,由系统按照默认值确定元素内容)
b) 静态初始化(系统指定数组长度,指定数组元素内容)
动态初始化就是只给定数组的长度,元素的初始化交给系统默认处理。
数据类型[] 变量名 = new 数据类型[n];
动态初始化格式:
数据类型[] 变量名 = new 数据类型[n];
左边:
数据类型 存储在这个数组中元素的类型
[] 表示这是一个数组
变量名 数组的名字
右边:
new 开辟/申请内存空间
数据类型 存储在这个数组中元素的类型
[] 表示这是一个数组
n 数组长度,是一个整型值
13. 方法的概述:
具有一定功能的代码集合;
注意事项:
a. 方法必须先定义再使用
b. 方法创建之后,需要手动使用,这个过程叫做方法的调用。
14. 最简单方法的定义和调用
1. 定义格式
public static void 方法名(){
方法体; //需要根据具体需求编写
}
2. 使用
方法名();
isEvenNumber()
3. 注意事项
a. 方法定义在类里面,main方法外面(方法不能嵌套定义)
b. 方法的调用,是在其他方法(目前是在main)里面
c. 一个作用:提高代码的复用性
d. 方法的调用时在栈内存中,方法被调用时进栈,调用完毕后方法出栈
15. 带参数方法的定义和调用
定义格式:public static void 方法名(参数列表){
方法体
}
使用:
方法名(与参数列表匹配的变量/常量);
参数列表:
组成: 数据类型1 变量名1, 数据类型2 变量2,……
1. 数据类型和 变量名必须成对出现
2. 调用时候,传的值或变量需要与定义时参数列表匹配
3. 参数列表匹配要求的是:各个参数的类型、参数数量、参数顺序都匹配
getMax(int num1, double num2)
16. 形参和实参
形参:方法定义的时候使用的参数
格式:数据类型 变量名
实参:方法调用时候传递的参数
变量名/常量值
形参和实参的关系
1. 名称:没有关系
实参的变量名和形参的变量名没有关系,可以完全不一样
2. 当参数为引用数据类型时
形参和实参指向了堆内存中同一地址值,通过任意一个参数修改其值,另外一个参数的值的具体内容会同步发生改变
17. 带返回值的方法定义和调用
返回值:方法的运算结果,这个结果的类型就是返回值的类型
格式:
public static 返回值类型 方法名(参数列表){
方法体
return 返回值;
}
调用:
调用格式1:
方法名(与参数列表匹配的变量/常量);
调用格式2:
数据类型 变量名 = 方法名(与参数列表匹配的变量/常量);
调用格式3:直接在其他方法中调用
System.out.println(方法名(与参数列表匹配的变量/常量));
调用格式4:传参调用
作为实参传递进其他的方法列表中
18. 方法定义的注意事项
1. 方法不能嵌套定义,只能定在类里面,其他方法外面
2. 返回值类型如果是void,表示没有返回值
方法中可以不写return
方法中可以写return,但是要这样写 return;
3. 返回值类型如果不是void,return值的类型必须和方法定义时返回值类型一致
4. 方法的return语句之后,不能再有语句,因为不会被执行
19. 方法的通用格式
格式:public static 返回值类型 方法名(参数列表){
方法体
return
}
public static 修饰符,目前先记住
返回值类型 方法运行结果值的类型
方法名 标识符,通过方法名调用该方法
参数列表 数据类型 变量名,……(参数列表是否匹配依据:参数类型、参数个数、参数顺序)
方法体 依业务而定,就是方法运行的主体
return 讲方法运行结果值返回,该值类型需要与方法的返回值类型一致
如果方法没有返回值,return可以不写,也可以return;
两个明确:
明确返回值类型
明确参数列表
调用
如果返回值类型是void,直接调用即可
如果返回值类型不是void,建议通过变量接收其返回值,以便继续使用
20. 方法重载
在同一个类中,存在方法名相同,参数列表不同的多个方法,这些方法之间就构成了方法重载
1. 在同一个类中(后续再做优化调整)
2. 多个方法方法名相同,返回值类型无所谓(方法名、参数列表相同,仅返回值类型不同的两个方法不是重载,是重复,会报错)
3. 参数列表不同:参数类型、参数个数、参数顺序
4. 调用时只需要传参就可以了,虚拟机会自己判断调用某个方法
21. 方法调用过程中参数传递细节
当参数是基本数据类型时,形参的改变不会影响实参
当参数是引用数据类型时,形参的改变会影响实参
|
|