JAVA基础

发布时间 2023-07-29 16:36:31作者: 鸡护宝

JAVA基础

一 了解JAVA

Pascal之父Nicklaus Wirth:“Algorithms+Data Structures=Programs”

译:应用程序=算法+数据结构

1.常见的Dos命令

  • dir:列出当前目录下的文件夹
  • md:创建目录
  • rd:删除目录
  • cd:进入指定目录
  • cd..:退回上一级目录
  • cd\:退回到根目录
  • del:删除文件

2.Java语言的特点

面向对象性:

​ 两个要素:类 ,对象

​ 三个特征:封装 ,继承 , 多态

健壮性:

​ 去除了C语言中的指针

​ 自动的垃圾回收机制

跨平台性:

​ 功劳归功于JVM(JAVA虚拟机)

​ Wtire once,Run anywhere.

​ 一次编译,到处运行

3.JDK/JRE/JVM的关系

JDK(Java Development Kit:JAVA的软件开发工具包)=JRE(JAVA运行环境)+开发工具集

JRE=JVM(JAVA虚拟机)+javaSE标准类库

4.path环境变量配置

为什么要配置环境变量

希望Java开发工具(javac.exe,java.exe)在任意文件夹下运行。

如何配置
属性-高级系统设置-环境变量新建'JAVA_HOME'变量,变量值为安装的JAVA的JDK所在地址.
在path变量中添加'%JAVA_HOME%\bin'即可.


二 基本语法

1.java关键字的使用

定义:被java语言赋予了特殊含义,用作专门用途的字符串(单词)

特点:关键词所有的字母都小写

2.保留字:现有java版本尚未使用

具体有哪些保留字:goto / const

注意:自己命名标识符时尽量避免使用这些保留字

3.标识符的使用

定义:java对各种变量,方法,类等要素命名时使用的字符序列成为标识符.(凡是可以自己起名的都是标识符)

涉及到的结构:包名/类名/接口名/变量名/方法名/常量名(加粗为必须要遵守,否则编译不通过)

规则:

  • 由24个英文字母大小写,0-9, _$组成
  • 数字不可以开头
  • 不可以使用关键字和保留字,但是可以包含关键字和保留字
  • java严格区分大小写,长度无限制
  • 标识符不能包含空格

规范:

  • 包名:多单词组成时所有字母都小写.例:xxyyzz
  • 类名,接口名:多单词组成是,所有单词首字母大写.例:XxYyZz
  • 变量名,方法名:多单词组成时,第一个单词首字母小写,后续首字母大写.例:xxYyZz
  • 常量名:所有首字母都大写,多单词组成时用下划线连接.例:XX_YY_ZZ
  • 起名时为了提高阅读性,要做到见名知意

4.变量*

4.1 变量的概念

​ 计算机内存中的一块存储空间,是存储数据的基本单元.

4.2变量的定义流程

声明: 数据类型 变量名; 例:int money;

赋值: 变量名= 值; 例:money = 100;

应用: System.out.println(变量名);

4.3变量的定义方式

声明变量的3种方式:

  • 先声明,再赋值:【常用】
  • 数据类型 变量名;
  • 变量名 = 值;
  • 声明并赋值:【常用】
  • 数据类型 变量名 = 值;
  • 多个同类型变量的声明与赋值:【了解】
  • 数据类型 变量1 , 变量2 , 变量3 = 值3 , 变量4 , 变量5 = 值5;

5.数据类型*

5.1基本数据类型(primitive type)

1.整型:byte(1字节 = 8bit)、short(2字节)、int(4字节)、long(8字节)
		byte范围:-128~127
		声明:long型变量,必须要以"l"或者"L"结尾
		通常,定义整型变量时,使用int型。
		整型的常量,默认类型时:int
2.浮点型:float(4字节)/long(8字节)
		浮点型,表示带小数点的数值
		float表示数值的范围比long还大
		定义float类型时,变量末尾要以"f"或"F"结尾
		定义浮点型变量时,使用double型。
		浮点型常量,默认类型为:double
3.字符型:char(1个字符=2字节)
		定义char型变量通常使用一对单引号''
		内部只能写一个字符
		表示方式:1.声明一个字符;2.转义字符;3.直接使用 Unicode 值表示字符型常量
4.布尔型:boolean
		只能取两个值之一: true 、 false
		常常在条件判断、循环结构中使用

5.2引用数据类型(字符串)

String类型 取值范围:任何" "之间的字面

​ 值字符编码:Unicode字符序列

6.类型转换

①自动类型转换(只涉及7种基本数据类型)

结论:当容量小的数据类型与容量大的数据类型的变量做运算时,结果自动提升为容量大的数据类型。
说明:此时的容量大小指的是,表示数的范围的大和小,比如:float容量要大于long的容量。
byte、char、short -->int -->long -->float -->double
特别:当byte、char、short三种类型的变量做运算时,结果为int类型。

②强制类型转换(只涉及7种基本数据类型)

强制类型转换:自动类型提升运算的逆运算。
1.需要使用强转符:()
2.注意点:强制类型转换,可能导致精度损失。

③String与8种基本数据类型间的运算

String属于引用数据类型,翻译为:字符串。
声明String类型变量时,使用一对双引号""
String可以和8种基本类型变量做运算,且运算只能是连接运算:+
String运算结果仍然是String类型。

7.运算符*

7.1算数运算符

操作符 描述
+ 加 , 求和
- 减 , 求差
* 乘 , 求积
/ 除 , 求商
% 模 , 取余
++ 递增 , 变量值+1
-- 递减 , 变量值-1

关于++/--在前++--在后的问题

++在前先做自增再赋值,++在后先做赋值再自增;

--同理

7.2赋值运算符

操作符 描述
= 右边直接赋值给左边
+= 左边加右边然后赋值
-= 左边减右边然后赋值
*= 左边乘右边后赋值
/= 左边除右边后赋值
%= 求余后赋值

7.3关系运算符

操作符 描述
> 大于
< 小于
>= 大于等于
<= 小于等于
== 等于(注意与=赋值区分)
!= 不等于

7.4逻辑运算符

操作符 语义 描述
&& 与(并且) 同为真则为真,有假则假
|| 或(或者) 有真就为真,全假则假
! 非(取反) 真即是假,假则为真

&&与&的区别:

共同点:有false则false,必须同时满足条件

不同点:逻辑单与&在判断左边为false时右边依然执行;而逻辑双与在判断左边为false时,会造成短路效果,右边不参与运算,在开发中常用,执行效率高.

7.5三元运算符

操作符 语义 描述
? : 布尔表达式?值1:值2 表达式为真时,输出值1; 表达式为假时,输出值2

三 流程控制

1.分支结构

①if-else条件判断结构

三种结构:
//结构一:
if(条件表达式){
	执行表达式
}

//结构二:二选一
if(条件表达式){
	执行表达式1
}else{
	执行表达式2
}

//结构三:多选一 
if(条件表达式){
	执行表达式3
}else if(条件表达式1){
	执行表达式4
}else if(条件表达式2){
	执行表达式5
}
...
else{
	执行表达式n
}

//else 结构是可选的

②switch-case选择结构

switch(表达式){
case 常量1:
	执行语句1;
	//break;
case 常量2:
	执行语句2:

...
default:
	执行语句n;
	//break;
	}

//说明:根据switch表达式中的值,依次匹配各个case中的常量。一旦匹配成功,则进入各个相应的case结构中,调用其执行语句。当调用完执行语句以后,则仍然继续向下执行其他case结构中的执行语句,直到遇到break关键字或此switch-case末尾结束。

//break,可以使用在switch-case结构中,表示一旦执行到此关键字,就跳出switch-case结构

//switch结构中的表达式,只能是如下的六种数据类型之一:byte、short、char、int、枚举类型(jdk5.0新增)、String类型(jdk7.0新增)

2.补充:Scanner用法

/*
如何从键盘获取不同类型的变量:需要使用Scanner类

具体实现步骤:
1.导包:import java.util.Scanner
2.Scanner的实例化:Scanner scan = new Scanner(System.in);
3.调用Scanner类的相关方法(  next()/nextxxx()  ),来获取指定类型的变量

注意:
需要根据相应的方法来输入指定类型的值,如果输入的数据类型与要求的类型不匹配时,会报异常:InputMisMatchException
导致程序中止。
*/

//1.导包:import java.util.Scanner
import java.util.Scanner;

class ScannerTest{

	public static void main(String[] args){
		//2.Scanner的实例化
		Scanner scan = new Scanner(System.in);
		//3.调用Scanner类的相关方法
		System.out.println("请输入你的姓名:");
		String name = scan.next();
		System.out.println(name);
		
		System.out.println("请输入你的年龄:");
		int num = scan.nextInt();
		System.out.println(num);

		System.out.println("请输入你的体重:");
		double weight = scan.nextDouble();
		System.out.println(weight);

		System.out.println("你是否相中了我?(true/false)");
		boolean man = scan.nextBoolean();
		System.out.println(man);

		//对于char型的获取,Scanner没有提供相关的方法,只能获取一个字符串
		System.out.println("请输入你的性别:(男/女)");
		String gender = scan.next();//"男"
		char genderChar = gender.charAt(0);//获取索引为0位置上的字符
		System.out.println(genderChar);
	}
}

3.循环结构*

1)循环结构四要素

①初始化条件
②循环条件 ————>是boolean类型
③循环体
④迭代条件
说明:通常情况下,循环结束都是从条件二中循环条件范围false了。

2)三种循环结构

①for循环
for( ①初始化语句 ; ②循环条件 ; ④循环操作 ){
		③循环体
}


执行过程:① ————> ② ————> ③ ————> ④ ————> ② ————> ③ .... ②不满足————>循环结束
执行过程
- 首次执行初始部分(仅一次)。
- 对布尔表达式进行判断,结果为true,则执行逻辑代码。
- 本次执行完毕后,执行迭代部分,再次判断,结果仍旧为true,则再次执行逻辑代码。
- 直至布尔表达式的结果为false时,才会退出循环结构,执行后续代码。
②while循环
初始化语句
while(循环条件){
	循环体;
    循环操作;
}
执行流程:
- 先对布尔表达式进行判断,结果为true,则执行逻辑代码。
- 本次执行完毕后,再次进行判断,结果仍旧为true,则再次执行逻辑代码。
- 直至布尔表达式的结果为false时,才会退出循环结构,执行后续代码。
③do-while循环
初始化语句;
do{
	循环体(循环操作)
}while(循环条件);

执行流程:
- 先执行一次循环操作之后,再进行布尔表达式的判断。
- 如果结果为true,则再次执行循环操作。
- 如果结果为false,才会退出循环结构,执行后续代码。

3)三种循环的区别

①三种循环的区别

for循环和while循环先判断条件是否成立,然后决定是否执行循环体(先判断后执行)

do-while循环则是先执行一次循环体,然后判断条件是否成立,是否继续执行循环体(先执行后判断)

②for和while的区别

条件控制语句控制的自增变量,因为归属for循环的语句结构中,在for循环结束后,就不能再被访问到了

条件控制语句所控制的自增变量,对于while循环来说不属于其语法结构中,再while循环结束后,该变量还可以继续使用

③死循环格式
for(;;){}
while(true){}		//常用
do{}while{true};

4.流程控制关键字

①流程控制break:终止、跳出switch、循环结构.

②流程控制continue:结束本次、进入下一次循环。

四 Java方法(method)

Java方法介绍:(method)是将具有独立功能的代码块组织成一个整体,使具有特殊功能的代码及,达到代码复用的效果,减少main方法中代码冗余