//无参无返回值的方法
public static void 方法名() {
//方法体
}
//有参无返回值的方法
public static void 方法名(数据类型 形参名1,数据类型 形参名2,数据类型 形参名3,...) {
//方法体
}
//无参有返回值的方法
public static 数据类型 方法名() {
//方法体
return 返回值;
}
//有参有返回值的方法
public static 数据类型 方法名(数据类型 形参名1,数据类型 形参名2,数据类型 形参名3,...) {
//方法体
return 返回值;
}
1.2、总结
-
方法声明时的参数是形参,方法调用时传入的参数是实参,实参赋值给形参。
-
方法调用时,实参的数据类型要与形参的数据类型保持一致
-
返回值的数据类型必须与方法声明的数据类型保持一致
-
return返回值的后面不可以写代码
break;2.2、continue 2.2.1、语法格式
continue;2.3、总结
- break关键字只能在switch-case结构中或循环结构中使用
- continue关键字只能在循环结构中使用
-
break和continue的区别?
答:break 和 continue 都是用来控制循环的语句。break用于完全结束一个循环,跳出循环体执行循环后面的语句。continue 用于跳过本次循环,继续下一次循环
//第一种方式
数据类型[] 数组名 = {值1, 值2, 值3,...};
数据类型 数组名[] = {值1, 值2, 值3,...};
//第二种方式
数据类型[] 数组名 = new 数据类型[容器(数组长度)];
数据类型 数组名[] = new 数据类型[容器(数组长度)];
//第三种方式
数据类型[] 数组名 = new 数据类型[]{值1, 值2, 值3,...};
数据类型 数组名[] = new 数据类型[]{值1, 值2, 值3,...};
1.2、数组赋值
public static void scanArr(int[] arr) {
Scanner s = new Scanner(System.in);
for (int i = 0; i < arr.length; i++) {
arr[i] = s.nextInt();
}
}
1.3、数组遍历
public static void printArr(int[] arr) {
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
}
1.4、二维数组的使用【了解】
import java.util.Scanner;
public class Demo_01 {
public static void main(String[] args) {
int rows,cols;
Scanner s = new Scanner(System.in);
System.out.print("输入二维数组arr行数:");
rows = s.nextInt();
System.out.print("输入二维数组arr列数:");
cols = s.nextInt();
int[][] arr = new int[rows][cols];
System.out.println("输入二维数组arr元素:");
scanArr(arr);
System.out.println("输出二维数组arr元素:");
printArr(arr);
}
public static void scanArr(int[][] arr) {
Scanner s = new Scanner(System.in);
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
arr[i][j] = s.nextInt();
}
}
}
public static void printArr(int[][] arr) {
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j] + " ");
}
System.out.println();
}
}
}
1.5、数组在方法中的使用
1.5.1、语法格式
//数组作为方法的参数
public static void 方法名(数据类型[] 形参) {
方法体
}
//数组作为方法的返回值
public static 数据类型[] 方法名() {
方法体
return 返回值;
}
//数组作为方法的参数和返回值
public static 数据类型[] 方法名(数据类型[] 形参) {
方法体
return 返回值;
}
1.6、数组的内存解析
| 内存区域 | 作用 |
|---|---|
| 寄存器 | 给CPU使用,和开发没有关系 |
| 本地方法栈 | 虚拟机(JVM)操作电脑系统时才会使用 |
| 方法区 | 存储和运行.class文件 |
| 堆区【重点】 | 存储对象或数组,new出来的都存在堆区 |
| 栈区【重点】 | 存储基本数据类型和引用数据类型的数据 |
public static void reverse(int[] arr) {
for(int i = 0,j = arr.length - 1;i < j;i++,j--) {
int temp;
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
1.8、总结
- 数组arr长度:arr.length
- 输出数组arr元素:char类型数据使用 sout(arr); 直接输出数据,其他类型数据使用 sout(Arrays.toString(arr)); 输出数据。
public static void selection_sort(int[] arr) {
for (int i = 0; i < (arr.length - 1); i++) {
for (int j = (i + 1); j < arr.length; j++) {
if (arr[i] > arr[j]) {
int temp;
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
1.1.2、冒泡排序
public static void bubble_sort(int[] arr) {
for (int i = 0; i < (arr.length - 1); i++) {
for (int j = 0; j < (arr.length - i - 1); j++) {
if (arr[j] > arr[j+1]) {
int temp;
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
1.2、总结
- 数组arr排序:Arrays.sort(arr);,Arrays.sort(arr) 使用的排序方式是快速排序
[public] class 类名 {
//属性
//构造方法
//普通方法
}
1.2、对象的创建
1.2.1、语法格式
类名 对象名 = new 类名();1.3、对象对属性赋值与方法调用 1.3.1、语法格式
//属性赋值 对象名.属性名 = 属性值; //方法调用 对象名.方法名();1.4、构造方法 1.4.1、语法格式
//无参构造方法
public 类名() {
}
//有参构造方法
public 类名(数据类型 形参1,数据类型 形参2,数据类型 形参3,...) {
//
}
1.4.2、构造方法给属性赋值
//语法格式 类名 对象名 = new 类名(值1,值2,值3,...);1.4.3、总结
- 构造方法的使用:new对象是依据构造方法来创建对象。如果不写构造方法,会自动分配一个默认的无参构造方法,如果写了构造方法(无参构造方法或有参构造方法),默认的无参构造方法就不会自动分配
{
语句体;
}
1.6.2、总结
- 构造代码块:必须写在实体类中
- 实例化对象后执行流程:先执行构造代码块,再执行构造方法
| 区别 | 成员变量 | 局部变量 |
|---|---|---|
| 定义位置不同 | 类中,实体类大括号的后面(属性) | 方法中或方法声明上(形参) |
| 作用范围不同 | 类中 | 方法中 |
| 初始化值不同 | 有默认值 | 没有默认值。必须先定义,赋值,最后使用 |
| 内存中位置不同 | 堆区 | 栈区 |
| 生命周期不同 | 随着对象的实例化而存在,随着对象的消失而消失 | 随着方法的调用而存在,随着方法的调用完成而消失 |
- 当实体类和测试类写在同一个Java文件中时,实体类不能使用public修饰符
class 类名 {
//1、成员变量加修饰符private
private 数据类型 xxx;
//2、在类中写set和get方法对属性进行赋值和取值
public void setXxx(数据类型 xxx) {
this.xxx = xxx;
}
public 数据类型 getXxx() {
return xxx;
}
}
1.2.1、属性赋值与取值
类名 对象名 = new 类名(); //属性赋值 对象名.setXXX(xxx); //属性取值 System.out.println(对象名.getXxx());1.2、关键字:this 1.2.1、语法格式
//方法调用属性(成员变量)和成员方法 this.属性名; this.方法名(); //构造方法调用构造方法【不常用】 this(); this(参数1,参数2,参数3,...);1.2.2、总结
- this关键字代表当前类的对象
- this关键字只能在方法(成员方法或构造方法)中使用
- this关键字可以在构造方法和成员方法中调用属性(成员变量)和成员方法
- this关键字可以调用构造方法,但只能在构造方法中调用构造方法,并且只能写在第一行
//对象作为方法的参数
public void 方法名(类名 对象名) {
//方法体
}
public 数据类型 方法名(类名 对象名) {
//方法体
return 返回值;
}
//对象作为属性(成员变量)
class 类名 {
//属性
类名 对象名;
//方法
}
1.3.2、总结
数2,参数3,…);
###### 1.2.2、总结
- [ ] this关键字代表当前类的对象
- [ ] this关键字只能在方法(成员方法或构造方法)中使用
- [ ] this关键字可以在构造方法和成员方法中调用属性(成员变量)和成员方法
- [ ] this关键字可以调用构造方法,但只能在构造方法中调用构造方法,并且只能写在第一行
##### 1.3、多类合作
###### 1.3.1、语法格式
```java
//对象作为方法的参数
public void 方法名(类名 对象名) {
//方法体
}
public 数据类型 方法名(类名 对象名) {
//方法体
return 返回值;
}
//对象作为属性(成员变量)
class 类名 {
//属性
类名 对象名;
//方法
}
1.3.2、总结
- 方法的参数和对象的属性可以是八大基本数据类型,引用数据类型(String、数组、对象)



