导图社区 1 JAVASE 基础-11.27
这是一篇关于1 JAVASE 基础-11.27的思维导图,是Java技术的核心和基础,是Java ME和Java EE编程的基础。
编辑于2023-12-25 17:12:05JAVASE
什么是java
一种面向对象的高级语言.
jdk
java开发工具包
安装和配置
下载安装 jdk 1.8,默认步骤安装即可。 配置环境变量 在 此电脑 --->右键 属性---->高级设置---->环境变量---->系统变量 新建 JAVA_HOME jdk的根目录(即 bin的父文件夹) 编辑 Path %JAVA_HOME%\bin
jdk jre jvm的区别和关系
jdk : java开发工具包 jre : java的运行环境(如果只进行java程序的运行,不进行开发,则只需安装jre) jvm : 虚拟机,它可以在不同类型设备(PC端,移动端等),不同系统(Windows,Linux,苹果等)上为java提供跨平台的丰富性。 关系: jdk中包含 jre jre 中包含 jvm
第一个java程序
1、创建一个 Hello.java文件(必须显示文件扩展名)
2、在文件中编写代码
public class Hello{ public static void main(String[] args){ System.out.println("Hello world"); } }
3、运行
win+r 打开运行窗口 输入 cmd 在黑窗口中输入: 盘符: cd 文件名\文件名 javac Hello.java java Hello
java程序的运行流程
编写源文件 .java文件 ---> javac 文件名.java 编译形成 文件名.class(字节码文件) ----->java 文件名(虚拟机运行字节码文件)
dos命令
1、 切换盘符 盘符: 回车 例如: f: 回车键 ----切换到f盘 2、进入文件夹 cd 文件夹名 或 cd 文件夹名\文件夹名\文件夹名 3、返回上一层文件夹 cd ..
常用命令
java程序基本语法
public class 类名{ public static void main(String[] args){ System.out.println("输出的内容"); } } 类名: 自己定义 只能使用字母 数字 _ $ 组成 。 不能以数字开头 不能使用关键字和保留字 区分大小写 注意: public 修饰的类 类名必须与 文件名同名.
变量
什么是变量
程序中存储数据的容器。
变量的声明语法
[修饰符] 类型 标识符 = 值; 或 [修饰符] 类型 标识符;
标识符
标识符:在java中自己定义的名称。 命名规则(必须遵守) 1、只能使用字母 数字 _ $ 组成 2、不能以数字开头 3、不能使用java中的关键字和保留字 4、区分大小写。 命名规范(约定俗成的习惯) 1、类名必须为大驼峰形式(即名称中的每个单词的首字符大写)(XxxxXxxx) 例如: FirstProject 2、变量名和参数名,方法名为小驼峰形式(即名称的第一个字符为小写,后续的单词的 首字符大写)(xxxXxxxXxxx) 例如:studentName 3、常量名全大写
约定俗成的内容:
类名: 一个单词: 首字母大写 Hello 多个单词: 每一个单词的首字母都要大写 HelloWorld (大驼峰)
变量名和方法: 一个单词: 全部小写 value get() 多个单词: 从第二个单词的首字母开始,每一个单词都要大写 maxValue getValue() (小驼峰)
包: 一个单词: 全部小写 cn com 多个单词: 全部小写中间用.(点)分割 com.itfxp 公司的域名倒着写 www.baidu.com-->com.baidu.xxx
自定义常量: 一个单词: 全部大写 MAX VALUE 多个单词: 全部大写 中间用 _ 隔开 MAX_VALUE
数据类型
==e+38表示是乘以10的38次方,同样,e-45表示乘以10的负45次方。== ==在java中整数默认是int类型,浮点数默认是double类型==
基本数据类型
数字类型
整数类型 byte --字节类型 -128 ~ 127之间的整数 浮点类型
字符类型
该类型存储单个字符 char 变量名 = '值';
布尔类型
只能存入 true 或 false true(真、是、0) false(假,否、1) boolean 变量名 = 值;
类型转换
自动类型转换:低级类型中的值 可以直接 赋值到 高级别的类型变量中 高级别的类型 变量名 = 低级别类型值; 强制类型转换:高级别类型的变量中值,不能直接放入到低级别的类型的变量中(可能造成精度损失)。可以通过强制类型指定进行转换。 低级别类型 变量名 =(低级别类型) 高级别的类型值; byte < short < int < long <float <double 字符类型和数字类型转换时 byte <---> char short <---> char 都属于同级别 注意: boolean 类型不参与转换
引用数据类型
除了基本数据类型之外的其他所有类型都为引用数据类型。 String 字符串类型即为一个引用数据类型。 注意: 引用数据类型和基本数据类型之间不能够直接进行转换。强制转换也不行。
String类型(字符串类型)
String 变量名 = "值"; 可以存储长字符
变量赋值格式
3种格式
注意事项:1. 在同一对花括号中,变量名不能重复。 2. 变量在使用之前,必须初始化(赋值)。 3. 定义long类型的变量时,需要在整数的后面加L(大小写均可,建议大写)。因为整数默认是int类型,整数太大可能超出int范围。 4. 定义float类型的变量时,需要在小数的后面加F(大小写均可,建议大写)。因为浮点数的默认类型是double, double的取值范围是大于float的,类型不兼容。
常量
什么是常量? 即值不可变。 字面常量(值常量) 容器常量(该容器中放入值不能改变) 声明常量容器 final 类型 常量名 = 值; 常量容器中一旦赋值,则值不能够再修改。通常一些数据不允许改变时,则放入到常量容器中。
运算符
算术运算符
即进行数字的数学运算: 加法运算 + 减法 - 乘法 * 除法 / 取模(求余数) %
赋值运算符
用于把数据存入到变量中 = 类型 变量 = 值; += : 把两个变量的值进行求和,把和赋值给 左边的变量 int a = 值; int b = 值; a+=b; 等同于 a = a+b; -= :把两个变量的值进行求差,把差赋值给左边变量; int a = 值; int b = 值; a-=b; 等同于 a = a-b; *= :把两个变量的值进行求积,把乘积赋值给左边变量; int a = 值; int b = 值; a*=b; 等同于 a = a*b; /=:把两个变量的值进行求商,把商赋值给左边变量; int a = 值; int b = 值; a/=b; 等同于 a = a/b; %=:求左边变量/右边变量 的余数,再把余数赋值给左边变量。 int a = 值; int b = 值; a%=b; 等同于 a = a%b; ++ 自增运算符(变量自增1) ++ 在前:变量先进行自增1,再参与运算 ++在后: 变量先参与一次运算,再进行自增1 -- 自减运算符 ++ 在前:变量先进行自减1,再参与运算 ++在后: 变量先参与一次运算,再进行自减1 
注意
1、不同类型的值参与运算时,计算结果为高级别类型。 2、byte short char 参与运算时,会自动提升为int 类型 3、a+= ,-= *= /= %= 具有自动进行类型转换的功能
字符串的"+"操作
当“+”操作中出现字符串时,这个”+”是字符串连接符,而不是算术运算。
例:System.out.println("我最"+ 666); // 输出:我最666
自增自减运算符
++ 自增 变量的值加1 -- 自减 变量的值减1
注意:
++和-- 既可以放在变量的后边,也可以放在变量的前边。 单独使用的时候, ++和-- 无论是放在变量的前边还是后边,结果是一样的。 参与操作的时候,如果放在变量的后边,先拿变量参与操作,后拿变量做++或者--。 参与操作的时候,如果放在变量的前边,先拿变量做++或者--,后拿变量参与操作。 最常见的用法:单独使用。
关系运算符
关系运算符有6种关系,分别为小于、小于等于、大于、等于、大于等于、不等于。最终于的结果是boolean类型
说明:
 关系运算符的结果都是boolean类型,要么是true,要么是false。 千万不要把`“==”误写成“=”,"=="`是判断是否相等的关系,"="是赋值。
逻辑运算符
逻辑运算符把各个运算的关系表达式连接起来组成一个复杂的逻辑表达式,以判断程序中的表达式是否成立,判断的结果是 true 或 false。 最终的结果也是boolean & 与 两边都为true时才为true ,有一个为false ,则计算结果为false boolean 变量名 = 布尔表达式 & 布尔表达式; && 短路与, 和 与的功能一致。唯一区别:如果 && 的左边结果为false,则右边不需要执行,最终结果直接为false; boolean 变量名 = 布尔表达式 && 布尔表达式; | 或 左右两边只要有一个为true,则最终结果为true. boolean 变量名 = 布尔表达式 | 布尔表达式; || 短路或 , || 左边的计算结果为true时,则右边无需再进行计算,最终结果为true; boolean 变量名 = 布尔表达式 || 布尔表达式; ! 对布尔表达式的结果进行取反 boolean 变量名 = !(布尔表达式); ^ 异或 左右两边的结果不同,则为true,相同则为false boolean 变量名 = 布尔表达式^布尔表达式;
说明

演示
 
短路逻辑运算符
在逻辑与运算中,只要有一个表达式的值为false,那么结果就可以判定为false了,没有必要将所有表达式的值都计算出来,短路与操作就有这样的效果,可以提高效率。同理在逻辑或运算中,一旦发现值为true,右边的表达式将不再参与运算。
说明

三元(目)运算符
格式:关系表达式 ? 表达式1 : 表达式2;
语法: 布尔表达?值1:值2; 布尔表达式的 结果为true,则运算结果取值1 结果为false,则运算结果取值2 注意: 三元运算的结果接收时要根据?之后设置的值的类型进行变量创建。 逻辑为:如果条件表达式成立或者满足则执行表达式1,否则执行第二个。
流程控制
流程结构
顺序结构(程序运行的默认结构,即代码从上到下执行)
选择结构
循环结构
选择结构语句
单分支结构
if(布尔表达式){ 符合条件后的执行内容; }
双分支结构
提供两种结果处理 if(布尔表达式){ 满足条件时的执行内容; }else{ 不满足条件时的执行内容; }
多分支结构
if else if多分支
设置多重满足条件的情况 if(布尔表达式1){ 满足条件1的执行内容; }else if(布尔表达2){ 满足条件2的执行内容; }else if(布尔表达式3){ 满足条件3的执行内容; }else{ 以上条件都不满足时,执行的内容; } 注意; 多分支结构,只要满足其中一种情况,则结构结束。
switch case多分支
语法: switch(表达式){ case 值1: 执行内容; break; case 值2: 执行内容; break; case 值3: 执行内容; break; default 以上条件都不满足执行内容; } 注意: 表达式的结果可以为 整数(byte short int) 或 字符串,字符类型 case选项中必须再功能设计结束时使用break;如果没有,则会出现case穿透, 会从当前符合条件的位置开始,一直执行到遇到break,或执行到结构自然结束。
循环结构语句
功能重复执行
for循环
语法: for(类型 变量=初始值 ; 变量的取值范围 ; 变量值的增长形式){ 循环的内容;(循环体); } 例如: for(int i=1;i<=10;i++){ System.out.println(i); }
while循环
语法: while(布尔表达式){ 循环的内容; } 布尔表达的结果为 true,则执行循环 为false,则结束循环
do while循环
语法: do{ 循环的代码 }while(布尔表达式); 布尔表达式 :true 循环执行 false 循环结束 注意: 无论条件是否成立,循环体至少执行一次。
循环嵌套
循环结构中再套一个循环结构。 即: 外部循环的循环体 中 也是一个循环结构 特点: 外部循环执行一次,内部循环执行一个整体。 嵌套1: for(){ for(){ } } 嵌套2: while(){ while(){ } } 嵌套3: while(){ for(){ } }
流程跳转语句
break
break 默认结束当前循环体。 如果循环有名称,则可以使用 break 循环名 结束指定循环 循环名: for(){ 循环名: for(){ break 循环名; } }
continue
作用:结束当次循环,继续下一次循环.
return
return 结束当前方法.
死循环
循环不会自动结束,一直持续下去,直到内存溢出. 产生的原因: 循环条件永远满足. 死循环在特殊情况下可以使用,但是必须设置手动退出功能.
数组
存储多个数据的容器。
数组分类
一维数组
多维数组
二维数组
声明: 动态初始化 类型[][] 数组名 = new 类型[长度][长度]; 静态初始化 类型[][] 数组名 = new 类型[][]{{值,值},{值},{值,值,值}}; 简写 类型[][] 数组名 = {{值,值},{值},{值,值,值}}; 取值 1 取外围数组中的元素,(获取内部的一个小数组) 类型[] 变量 = 数组名[下标]; 2 取内部数组中元素 类型 变量 = 数组名[外部数组下标][内部数组下标]; 赋值 1 给外围数组的元素位置赋值一个新数组 数组名[下标] = 新一维数组; 注意: 赋值新数组,并不是把原有数组的长度进行改变,而是用新数组地址覆盖该元素位 置的原有数组 2 给内部数组中元素赋值 数组名[外部数组下标][内部数组下标]=值; 遍历: for(int i=0;i<数组名.length;i++){ for(int j=0;j<数组名[i].length;j++){ //获取内部数组元素值 类型 变量 = 数组名[i][j]; } }
一维数组的声明
基本语法 类型[] 数组名; 类型 数组名[]; 数组的特点: 1、数组中存储同一种类型的数据。 2、数组的长度是,一旦指定,不可改变。 数组的初始化操作: 动态初始化:即创建指定长度的数组,当创建时,不给数组中放入具体数据。 类型[] 数组名 = new 类型[长度]; 静态初始化:创建数组时,直接指定数组中的具体内容。 类型[] 数组名 = new 类型[]{值,值,值,值}; 简写方式: 类型[] 数组名 = {值,值,值,值};
数组的赋值和取值操作
获取数组中的数据 数组名[下标] 数组赋值 数组名[下标] = 值; 下标,索引:即数组中给值排列的位置编号。从0开始 System.out.println(Arrays.toString(数组名)); 直接打印整个数组
数组的遍历
获取数组中的元素个数(即数组的长度) int 变量名 = 数组名.length; 数组的中最后一位的下标 数组长度-1; 遍历 for(int 下标变量=0;下标变量<数组名.length;下标变量++){ //获取数组元素 类型 新变量名 = 数组名[下标变量]; }
内存存储
基本数据类型的变量中存储的为值 引用数据类型的变量中存储的为地址值.进行操作时会根据地址找到内存中真实值进行操作.
方法Method
方法即一个功能的相关代码的聚合体. 作用: 会使代码更加清晰. 使main方法中的代码量减少. 注意: 定义的方法,不会自动执行,必须在main中调用执行.
方法的声明
语法: 修饰符 返回值类型 方法名(参数列表){ 执行内容; } 返回值: 即方法中对外输出的数据. 参数: 即方法中接收外的部数据
方法的分类
无参数无返回值的方法
语法: 修饰符 void 方法名(){ } void :即无返回值 ()中不定义任何形参,即无参数 调用: 方法名();
有参数,无返回值的方法
语法: 修饰符 void 方法名(类型 参数名,类型 参数名 ){ } 有参方法的调用 方法名(值,值); 形参: 形式参数,即只规定了参数的类型,但没有实际值. 实参: 实际参数值.
无参数,有返回值的方法
语法: 修饰符 类型 方法名(){ return 值; } 调用: 类型名 变量 = 方法名();
有参数,有返回值的方法
语法: 修饰符 返回值类型 方法名(类型 参数名,类型 参数名,类型 参数名){ return 值; } 调用 类型 变量 = 方法名(值,值,值);
void表示无返回值,可以省略return,也可以单独的书写return(后代码不执行)。修饰符固定写法:public static
参数
形式参数:定义方法时()中的参数
实参:在调用该方法时传递的参数
PS:可以不接收返回的值,但必须给出参数 传参:
1.按值传递 当实参是变量、常量、表达式、数组元素,形参是变量名时,函数传递数据采用的是按值传递。 按值传递属于单向传递,即实参把值传给形参,但形参不能把值传递给实参。因为在内存中实参与形参是不同的存储单元。“ 定义函数时,系统并不给形参分配存储单元,只有函数被调用时系统才给形参分配存储单元。调用结束后形参所占用的存储单元被释放。“ 2.按地址传递“ 当函数的形参是数组、指针时,函数传递数据采用的是按地址传递。由于传递的是地址,使形参与实参共享相同的存储单元,这样通过形参可以直接引用或处理该地址中的数据,达到改变实参值的目的。“
参数传递
基本数据类型传递. 方法之内对形参中接收到的值进行操作,不会影响方法之外 作为实参传入的变量. 引用数据类型传递:(String除外) 方法之内对形参中接收到的值进行操作,会影响方法之外 作为实参传入的变量. java中是值传递,还是引用传递? java中是值传递,没有引用传递.
方法重载overloading
在同一个类中定义多个同名方法 方法的参数列表不能相同(参数的类型或参数的个数不同) 与返回值类型无关. 例如: public static boolean gt(int a,int b){ return a>b; } public static boolean gt(double a,double b){ return a>b; } public static boolean gt(String a,String b){ return a.length()>b.length(); }
中心主题