JAVA基础07
数组的应用
数组遍历的封装
/**
- 此方法需要传入一个数组, 可以遍历这个数组,由中括号加逗号的形式打印出来
*/
public class ArrayUtil {
public static void printarr(int[] arr) {
for (int i = 0; i < arr.length; i++) {
// 对一个元素的数组做单独处理
if (arr.length == 1) {
System.out.println("[" + arr[0] + "]");
}
// 2. 如果是第一个元素:打印 [元素,
else if (i == 0) {
System.out.print("[" + arr[i] + ",");// 注意不换行
} else if (i == arr.length - 1) {
// 3. 最后一个元素: 元素]
System.out.println(arr[i] + "]");// 可以换行
} else {
// 4.其余元素: 元素,
System.out.print(arr[i] + ",");// 不换行
}
}
}
数组的最值
public static void getMaxAndMin(int[] arr) {
/**
* 打印数组中的最大值和最小值, 先假定一个最大值和最小值,抽取数组中的第一个数赋值给最大值和最小值.
* 将它和数组中的每一个元素,做比对,如果比它大或比他小,就将它替换掉
*
*/
int max = arr[0];
int min = arr[0];
for (int i = 1; i < arr.length; i++) {
if (max < arr[i]) {
max = arr[i];
}
if (min > arr[i]) {
min = arr[i];
}
}
System.out.println("最大值为:" + max);
System.out.println("最小值为:" + min);
}
数组内元素的交换
/**
* 输入想要交换的两个数的索引值,交换两个值在数组中的顺序,设定一个空杯子,将这两个数中的值通过空杯子交换掉
*/
public static void changeElement(int[] arr) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个要交换的元素的索引值");
int a = sc.nextInt();
System.out.println("请输入第二个要交换的元素的索引值");
int b = sc.nextInt();
if (!(a >= 0 && a <= arr.length - 1 && b >= 0 && b <= arr.length - 1)) {
System.out.println("您输入的索引值不正确,请重新运行");
return;
}
System.out.print("交换前:");
printarr(arr);
int temp = arr[a];
arr[a] = arr[b];
arr[b] = temp;
System.out.print("交换后:");
printarr(arr);
}
数组的逆序
/**将一个数组的顺序从头到尾进行逆序处理,通过for循环和空杯子将一个数组从两头往中间逐一交换*/
public static void reverse(int[] arr) {
System.out.print("逆序前:");
ArrayUtil.printarr(arr);
for (int i = 0; i < arr.length / 2; i++) {
int temp = arr[i];
arr[i] = arr[arr.length - 1 - i];
arr[arr.length - 1 - i] = temp;
}
System.out.print("逆序后:");
ArrayUtil.printarr(arr);
}
}
main方法中的数组args
/**
args: 用来获取键盘录入的参数的
javac 命令不变
java 类名 (空格) 参数1 (空格)参数2…
*/
class HelloWorld{
public static void main(String[] args){
for(int i=0;i<args.length;i++){
System.out.println(args[i]);
}
}
}
面向对象
概念:把现实中的事物抽象成由一系列属性和行为组成的结构体,每个结构体都有属于自己的功能,在软件开发的过程中,通过对不同功能的结构体进行结合,完成整个软件体的功能,且结构体可复用.
软件开发的生命周期
需求分析
概要设计
详细设计
软件开发
软件测试
上线部署运行和维护
面向对象三大特征 : 封装 继承 多态 (抽象)
类和对象的关系
类:同一事物的特征和行为的抽取模板,类是一个模板,类是虚拟的,不是真实存在的,类是一种引用数据类型,自定义的一种类型
对象:是根据类这个模板生产出来的产品,是一个真实存在的事物,对象的前提必须要有类
我们在描述我们自己定义的类的时候,我们会将这个事物的特征抽取为类中的变量将这些事物的行为抽取为类中的方法
类的定义格式:
class 类名{}
数据类型 属性名; //类中的属性,又叫成员属性
数据类型 属性名; //类中的属性,又叫成员属性
public void 方法名{
描述的事物的一些行为即方法
}
如何根据类创建对象:
格式: 类名 对象名 = new 类名();
刚创建出来的对象,是没有任何属性值的,需要我们给他们赋值
对象名.属性名 = 初始化值;
内存区
堆 : 存放的都是new出来的东西 , 包括成员变量 ,和new出来的对象
栈 : 虚拟机栈
方法区 : 方法区内有常量池/方法表/class文件区/静态区
六大组件
*1.成员变量:定义在类中,方法外的变量,不被static修饰,存放在堆内存中,有初始值,随着对象的产生而产生.随着对象的消失而消失
*2.成员方法:不被static修饰的方法
*3.局部变量:定义在方法中的变量叫局部变量,存放在栈内存中,没有初始值,随着方法的调用而产生,随着方法的结束而消失.
*4.静态变量;被static修饰的变量
*5.静态方法:被static修饰的方法
*6.构造方法:方法名与类名一模一样的方法 就叫做构造方法
public class Demo6 {
public static void main(String[] args) {
Cat c = new Cat();
c.name="小猫";
c.age=1;
c.color="绿色";
c.sex="母猫";
c.show();
c.eat();
}
}
class Cat {
String name;
String sex;
String color;
int age;
```
public void eat() {
System.out.println("我喜欢吃鱼");
}
public void jump() {
System.out.println("猫喜欢蹦跳");
}
public void show() {
System.out.println("我的名字是:"+name+",我是一只:"+sex+",我的颜色是:"+color+",我今年:"+age+"岁");
}