Java基础阶段总结——练习小项目+IDEA使用说明+Java方法+关键字return+debug

Java日报

部门:**大数据开发六部

姓名:cqmfx(阡陌飞絮)

日期:2020.10.26
备注:有些资料参考、转自百度、菜鸟、CSDN,侵删!

大纲

一、练习项目(操作公司人员年龄)

二、IDEA安装、设置、快捷键及快捷代码

三、Debug的使用方法

四、Java 方法 和形参实参及关键字return的使用方法

总结练习

一、练习项目(操作公司人员年龄)

import java.util.Scanner;
public class XinZhiArge{
    
    
	public static void main(String[] args){
    
    
	/**
	*1、scanner手动输入数组的元素
	*2、用switch
	*功能   1.求其中年龄最大的 2.给年龄从小到大排序 3.插入一个元素 4.退出
	*	要求能重复进行功能,然后控制退出
	*/
		Scanner scanner = new Scanner(System.in);				//scanner函数
		int [] users = new int[5];
		System.out.println("请依次输入员工的年龄:");				//录入公司人员的年龄
		for (int i = 0;i < users.length;i++){
    
    
			System.out.print(" 输入第"+ (i + 1) + "个员工的年龄:");
			users[i] = scanner.nextInt(); 
		}
		boolean flag = true;				//boolean函数用于控制while的开关
		while (flag){
    
    						//为真,控制多次运行
			System.out.println("请选择要执行的操作:\n 1.得员工中最大的年龄 \n 2.将员工的年龄从小到大排列 \n 3.插入一个员工的年龄\n 4.退出");
			int n = scanner.nextInt();							//录入选择case几
			System.out.println("已选定第" + n + "个选择!");			
				switch (n){
    
    										//开关,是哪个就执行哪个case的语句
					case 1:										//比大小
						int tempMax = users[0];
						for (int i = 0;i < users.length;i++){
    
    
							if(users[i] > tempMax){
    
    
								tempMax = users[i];
							}
						}
						System.out.println("公司最大的年龄是:"+tempMax);
						System.out.println("——————————————————————————");
						break;
					case 2:										//冒泡排序
						int temp = users[0];
						for (int i = 0; i <users.length - 1;i++){
    
    
							for (int j = 0;j <users.length - i - 1;j++){
    
    
								if (users[j] > users[j + 1]){
    
    
									temp = users[j];
									users[j] = users[j + 1];
									users[j + 1] = temp;
								}
							}					
						}
						break;
					case 3:									//插入元素
						int[] user = new int[users.length + 1]; 	//定义一个比原数组长一位的新数组
						for (int i = 0;i < users.length;i++){
    
    		//将原数组中的元素录入新定义的数组中
							user[i] = users[i];
						}
						System.out.print("请输入需要插入的年龄:");
						user[user.length-1] = scanner.nextInt();	//录入需要插入的元素,且在在新数组的末尾插入	
						users = user;								//将新数组指定原数组,使其为插入元素后的新数组
						break;
					case 4:
						flag = false;
						break;
					default:
						System.out.println("警告!!!没有此选项!");
						System.out.println("此时数组为:");
						break;
			}
			for (int i = 0;i < users.length;i++){
    
    
				System.out.println(users[i]);
			}						
		}		
	}	
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、IDEA安装、设置、快捷键及快捷代码

(1)安装+破解

1.1、安装

<1>点击安装包

在这里插入图片描述

<2>选择安装路径,一直点下一步
<3>选择加载64位环境和 .java

在这里插入图片描述

<4>一直下一步,建议将IDEA安装到c盘,使编译运行得到速度提升
<5>最后来到让你填邮件这个界面,安装成功。

1.2、破解

<1>点第三个,表示先试用30天
<2>进入界面,创建一个project包

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

<3>将破解包拖进IDEA界面,弹出重启按钮,进行重启

在这里插入图片描述
在这里插入图片描述

<4>重启时弹出安装破解工具,默认确定就好,进去界面,安装成功

在这里插入图片描述
在这里插入图片描述

(2)设置+插件

​ 设置自己舒服的界面,Ctrl + Alt + s
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(3)快捷键+快捷代码

3.1、main方法

​ 在类体中输入 psvm ,回车。生成如下代码。

public static void main(String[] args) {
    
    

}
3.2、打印输出

​ 在方法体中输入 **sout ,**回车。生成如下代码。

System.out.println();
3.3、普通 for 循环

​ 在方法体中输入 **fori,**回车。生成如下代码。

for (int i = 0; i < ; i++) {
    
    

}
3.4、增强 for 循环

一种主要用于数组的增强型 for 循环

for(声明语句 : 表达式)
{
    
    
   //代码句子
}

​ 在方法体中输入 **foreach,**回车。生成如下代码。

for ( : ) {
    
    

}
3.5、查看更多快捷键

​ Ctrl + J

三、Debug的使用方法

(1)基本用法&快捷键

1.1、Debug调试的功能

在这里插入图片描述

> Show Execution Point (Alt + F10):如果你的光标在其它行或其它页面,点击这个按钮可跳转到当前代码执行的行。

> Step Over (F8):步过,一行一行地往下走,如果这一行上有方法不会进入方法。

> Step Into (F7):步入,如果当前行有方法,可以进入方法内部,一般用于进入自定义方法内,不会进入官方类库的方法

> Force Step Into (Alt + Shift + F7):强制步入,能进入任何方法,查看底层源码的时候可以用这个进入官方类库的方法。

> Step Out (Shift + F8):步出,从步入的方法内退出到方法调用处,此时方法已执行完毕,只是还没有完成赋值。

> Drop Frame (默认无):回退断点

> Run to Cursor (Alt + F9):运行到光标处,你可以将光标定位到你需要查看的那一行,然后使用这个功能,代码会运行至光标行,而不需要打断点。

> Evaluate Expression (Alt + F8):计算表达式

1.2、第二组按钮,共7个按钮,从上到下依次如下:

在这里插入图片描述

> Rerun ‘xxxx’:重新运行程序,会关闭服务后重新启动程序。

> Update ‘tech’ application (Ctrl + F5):更新程序,一般在你的代码有改动后可执行这个功能。而这个功能对应的操作则是在服务配置里

> Resume Program (F9):恢复程序,比如,你在第20行和25行有两个断点,当前运行至第20行,按F9,则运行到下一个断点(即第25行),再按F9,则运行完整个流程,因为后面已经没有断点了。

> Pause Program:暂停程序,启用Debug。目前没发现具体用法。

> Stop ‘xxx’ (Ctrl + F2):连续按两下,关闭程序。有时候你会发现关闭服务再启动时,报端口被占用,这是因为没完全关闭服务的原因,你就需要查杀所有JVM进程了。

> View Breakpoints (Ctrl + Shift + F8):查看所有断点,后面章节会涉及到。

> Mute Breakpoints:哑的断点,选择这个后,所有断点变为灰色,断点失效,按F9则可以直接运行完程序。再次点击,断点变为红色,有效。如果只想使某一个断点失效,可以在断点上右键取消Enabled,则该行断点失效。

在这里插入图片描述

(2)简单使用

​ ① 以Debug模式启动服务,左边的一个按钮则是以Run模式启动。在开发中,我一般会直接启动Debug模式,方便随时调试代码

② 断点:在左边行号栏单击左键,或者快捷键Ctrl+F8 打上/取消断点,断点行的颜色可自己去设置。

③ Debug窗口:访问请求到达第一个断点后,会自动激活Debug窗口。如果没有自动激活,可以去设置里设置

④ 调试按钮:一共有8个按钮,调试的主要功能就对应着这几个按钮,鼠标悬停在按钮上可以查看对应的快捷键。在菜单栏Run里可以找到同样的对应的功能

四、Java 方法 和形参实参及关键字return的使用方法

(0) System.out.println()

  • println() 是一个方法。
  • System 是系统类。
  • out 是标准输出对象。

这句话的用法是调用系统类 System 中的标准输出对象 out 中的方法 println()。

(1)那么什么是方法呢?

Java方法是语句的集合,它们在一起执行一个功能。

  • 方法是解决一类问题的步骤的有序组合
  • 方法包含于类或对象中
  • 方法在程序中被创建,在其他地方被引用

(2)方法的优点

  • \1. 使程序变得更简短而清晰。
  • \2. 有利于程序维护。
  • \3. 可以提高程序开发的效率。
  • \4. 提高了代码的重用性。

(3)方法的命名规则

  • 1.方法的名字的第一个单词应以小写字母作为开头,后面的单词则用大写字母开头写,不使用连接符。例如:addPerson

  • 2.下划线可能出现在 JUnit 测试方法名称中用以分隔名称的逻辑组件。一个典型的模式是:

    test<MethodUnderTest>_<state> 例如 testPop_emptyStack
    

(4)方法的定义

修饰符 返回值类型 方法名(参数类型 参数名){
    
    
    ...
    方法体
    ...
    return 返回值;
}

(5)方法语句的详解

方法包含一个方法头和一个方法体。下面是一个方法的所有部分:

  • **修饰符:**修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。
  • 返回值类型 :方法可能会返回值。returnValueType 是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。在这种情况下,returnValueType 是关键字void
  • **方法名:**是方法的实际名称。方法名和参数表共同构成方法签名。
  • **参数类型:**参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。
  • **方法体:**方法体包含具体的语句,定义该方法的功能。

(6)方法调用

​ Java 支持两种调用方法的方式,根据方法是否返回值来选择。

​ 当程序调用一个方法时,程序的控制权交给了被调用的方法。当被调用方法的返回语句执行或者到达方法体闭括号时候交还控制权给程序。

当方法返回一个值的时候,方法调用通常被当做一个值。

四、Java 方法 和形参实参及关键字return的使用方法

(一)关键字return

1、return:必须放在方法中

2、1、如果一个方法有返回值,那么必须出现return,返回方法指定类型值
2、一个方法的返回值为void,也可以出现return,但是后面什么也不可以写,直接写return ;
3、return 语句后面的内容都不在执行,这是与break不同的地方,二者虽然都可以跳出循环,但是break跳出循环,后面的额代码还将继续执行。

(二)形参和实参

1、形参和实参的主要功能

  • 形参出现在函数定义中,在整个函数体内都可以使用,离开该函数则不能使用。
  • 实参出现在主调函数中,进入被调函数后,实参变量也不能使用
  • 形参和实参的功能是作数据传送。发生函数调用时,主调函数把实参的值传送给被调函数的形参从而实现主调函数向被调函数的数据传送

2、形参和实参的区别

1.形参变量只有在被调用时才分配内存单元,在调用结束时, 即刻释放所分配的内存单元。因此,形参只有在函数内部有效。 函数调用结束返回主调函数后则不能再使用该形参变量。
2.实参可以是常量、变量、表达式、函数等, 无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值, 以便把这些值传送给形参。 因此应预先用赋值,输入等办法使实参获得确定值。
3.实参和形参在数量上,类型上,顺序上应严格一致, 否则会发生“类型不匹配”的错误。
4.函数调用中发生的数据传送是单向的。 即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。 因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化。
5.当形参和实参不是指针类型时,在该函数运行时,形参和实参是不同的变量,他们在内存中位于不同的位置,形参将实参的内容复制一份,在该函数运行结束的时候形参被释放,而实参内容不会改变。
如果函数的参数是指针类型变量,在调用该函数的过程中,传给函数的是实参的地址,在函数体内部使用的

(三)用方法改写项目

/**
 * 2020/10/26
 *
 * @author 阡陌飞絮cqmfx
 */
import java.util.*;
public class NewSort {
    
    
        public static void main(String[] args) {
    
    
            Scanner scanner = new Scanner(System.in);
            int[] users = new int[5];
            System.out.println("请依次输入员工的年龄:");
            for (int i = 0; i < users.length; i++) {
    
    
                System.out.print(" 输入第" + (i + 1) + "个员工的年龄:");
                users[i] = scanner.nextInt();
            }
            boolean flag = true;
            while (flag) {
    
    
                    System.out.println("请选择要执行的操作:\n 1.得员工中最大的年龄 \n 2.将员工的年龄从小到大排列 \n 3.插入一个员工的年龄\n 4.退出");
                    int n = scanner.nextInt();
                    System.out.println("已选定第" + n + "个选择!");
                    switch (n) {
    
    
                        case 1:
                            int tempMax = findMax(users);
                            System.out.println("公司最大的年龄是:" + tempMax);
                            System.out.println("——————————————————————————");
                            break;
                        case 2:
                            sort(users);
                            break;
                        case 3:
                            System.out.println("输入新员工年龄:");
                            int temp = scanner.nextInt();
                            users =  and(users,temp);
                            break;
                        case 4:
                            flag = false;
                            break;
                        default:
                            System.out.println("警告!!!没有此选项!");
                            System.out.println("此时数组为:");
                            break;
                    }
                    for (int i = 0; i < users.length; i++) {
    
    
                        System.out.println(users[i]);
                    }
                }
        }
        public static int findMax(int [] arr){
    
    
                int tempMax = arr[0];
                for (int i = 0; i < arr.length; i++) {
    
    
                        if (arr[i] > tempMax) {
    
    
                            tempMax = arr[i];
                        }
                }
                return tempMax;
        }
        public static void sort(int [] user){
    
    
            int temp = user[0];
            for (int i = 0; i < user.length - 1; i++) {
    
    
                for (int j = 0; j < user.length - i - 1; j++) {
    
    
                    if (user [j] > user [j + 1]) {
    
    
                        temp = user[j];
                        user [j] = user [j + 1];
                        user [j + 1] = temp;
                    }
                }
            }
            return;
        }
        public static int [] and (int [] js,int temp ){
    
    
            int[] user = new int[js.length + 1];
            for (int i = 0; i < js.length; i++) {
    
    
                user[i] = js[i];
            }
            System.out.println("插入后的年龄为:");
            user[user.length - 1] = temp;
            return user;
        }

}
er [j + 1] = temp;
                    }
                }
            }
            return;
        }
        public static int [] and (int [] js,int temp ){
    
    
            int[] user = new int[js.length + 1];
            for (int i = 0; i < js.length; i++) {
    
    
                user[i] = js[i];
            }
            System.out.println("插入后的年龄为:");
            user[user.length - 1] = temp;
            return user;
        }
}

ps:运行结果参见前面的项目!!!

猜你喜欢

转载自blog.csdn.net/cqmfx/article/details/109305847