DAY5DAY6

方法:就是你要实现某个功能具体的步骤的封装,提高代码的复用性
方法的格式: 权限修饰符 状态修饰符号 返回值类型 方法名(参数列表){方法体}
方法的调用   方法名();
方法的重载:允许一个类中 出现多个同名的方法 但是要参数个数或参数类型不同
类中要有成员变量和成员方法:
ackage org.westos.demo;
public class Student {
 //定义该类的成员变量
 String name="小明";
 int age=20;
 int height=168;
 //定义成员方法
 public int calc(int a,int b){
  System.out.println("我会做计算");
  return a+b;
 }
 public void sing(String gequ){
  System.out.println(name+"会唱"+gequ);
 }
还需要一个测试类来测试
package org.westos.demo;
public class Test2 {
 public static void main(String[] args) {
  //使用一个类,必须对类进行实例化,所谓实例化,就是创建该类
  //最核心的一句话:new 对象 调方法
  Student student = new Student();//new对象
  Student student2=new Student();
  String name = student.name;
  System.out.println(name);
  int result = student.calc(10, 20);//调方法student.calc()
  System.out.println(result);
  student.sing("凉凉");
 }
}

   数组:是一个容器,用来存储多个相同类型的数据
   数组中有一个length属性可以获取数组的长度
     int[] arr=new int[5];定义一个数组并且给出数组的长度。
     arr[0]=20;
     int[] arr={2,9,8};给数组元素赋值。
   数组中有一个length属性可以获取数组的长度
                int length = arr.length;
  System.out.println(length);
  比如数组的遍历就可以用length

二维数组:一个数组中嵌套了一维数组,数组中的元素 是一个数组
二维数组定义格式
int[][] arr=new int[2][]
2 代表这个二维数组中有两个一维数组,也就是二维数组的长度
遍历一个二维数组:
package org.westos.demo2;
public class MyArrayTest3 {
 public static void main(String[] args) {
  //定义一个二维数组
  int[][] arr={{2,6},{9,8},{7,9},{4,9,4}};
  //遍历二维数组
  for(int i=0;i<arr.length;i++){
   for(int j=0;j<arr[i].length;j++){
    System.out.println(arr[i][j]);
   }
  }
 }
}
调用方法时,传递参数 如果传的是基本数据类型 形参的改变不影响实参
如果传的是引用数据类型,形参的改变是会影响到实参
数据类型:基本数据 和 引用数据类型
基本数据类型:四类八种
引用数据类型:就是new出来的东西,存在堆内存,系统会给其分配地址值,并且还有默认值
  比如int型的默认值是0,String的默认值是null


递归:在方法中调用方法本身的一种现象
递归的注意事项:递归要有出口,不然就是死递归
  递归的次数不能过多
  在日常中,能使用循环可以解决的问题就用循环,使用递归可能会
     出现死递归而且递归次数过多还会出现栈溢出


Java对内存空间的一个分配   栈内存  堆内存  方法区  寄存器(cup) 本地方法区(与系统相关)
局部变量存在栈内存,局部变量:定义在方法中的变量,或者方法声明上(形参)的变量
所有new 出来的东西都存在堆内存

面向对象:万物皆对象  new对象,调方法

类 class 最小的单位 类其实就是对 成员变量(属性) 成员方法(功能)的封装
类 是一个抽象的概念,我要用他里面的功能和属性,必须对其实例化,所谓实例化就是创建该类的对象

当成员变量和局部变量重名的时候,我们采用的就是就近原则
如果你看到一个方法要一个类 类型的参数,你就得传一个该类的对象(引用)
如果你看到一个方法要一个返回值类型是 类 类型你就传一个该类的对象(引用)
  

形式参数
 基本类型:形式参数的改变不影响实际参数
 引用类型:形式参数的改变直接影响实际参数

匿名对象:没有名字的对象,只想调用一次方法 就可以使用匿名对象
通过 对象名.成员变量名 这种方式去给成员变量设置值不好,因为这种方式会设置上去一些不合理的数据
出于数据安全和合理性方面的考虑,我们应该屏蔽掉这种设置成员变量值的方式(对象名.成员变量名)
我们可以用一个权限修饰符去修饰一下, 用一个关键字private, private 修饰了成员变量,成员方法,
只能在本类中访问,其他类中就不能通过对象名来直接访问
提供一个公共的 set方法用来设置值 再提供一个公共的 get方法用来获取值。
        快捷键 shift+alt+s,选GettersAndSetters
  
this关键字
当局部变量和成员变量重名的时候,我们可以用this 去区分这两个变量
this 关键字,代表一个本类的对象(引用), 谁调用我 我就代表谁

自定义的类中默认就会有无参的构造
 但是当你显式的给出 有参构造后,默认的无参构造 就没有了
 如果你还想采用无参构造 来创建对象,那你就手动给出无参构造,建议手动给出
 public Teacher(){};
 public Teacher(String name){
  System.out.println("有参数构造");
 快捷键: shift+alt+s,选择Generate Constructor using fields构建有参构造
    选择Generate Constructor from superclass构建无参构造

一个类由什么构成:构造方法,成员变量 成员方法

创建对象内存中的步骤:以学生类为例
   (1):加载Student.class文件进内存
   (2):在栈内存为s开辟空间
   (3):在堆内存为学生对象开辟空间
   (4):对学生对象的成员变量进行默认初始化
   (5):对学生对象的成员变量进行显示初始化 
   (6):通过构造方法对学生对象的成员变量赋值
   (7):学生对象初始化完毕,把对象地址赋值给s变量

数组的几个操作方法
获取最值:
package org.westos.demo;
public class MyTest5 {
 public static void main(String[] args) {
  int[] arr={9,100,2,3,40,60,1,99};
  int max=arr[0];
  for(int i=1;i<arr.length;i++){
   if(arr[i]>max){
    max=arr[i];
   }
  }
  System.out.println(max);
 }
}
数组反转:
package org.westos.demo;
import java.util.Arrays;
public class MyTest6 {
 public static void main(String[] args) {
   //方式一
  int[] arr = { 1, 2, 3, 4, 5 };// 54321
  for (int i = 0; i < arr.length / 2; i++) {
   int t = arr[i];
   arr[i] = arr[arr.length - 1 - i];
   arr[arr.length - 1 - i] = t;
  }
  for (int j = 0; j < arr.length; j++) {
   System.out.print(arr[j] + ",");
  }
  // 方式2
  for (int i = 0, j = arr.length - 1; i <= j; i++, j--) {
   int t = arr[i];
   arr[i] = arr[j];
   arr[j] = t;
  }
  for (int j = 0; j < arr.length; j++) {
   System.out.print(arr[j] + ",");
  }
 }
}
数组查表法:
package org.westos.demo;//package
import java.util.Scanner;
public class MyTest7 {
 public static void main(String[] args) {
  //ctrl+shif+o 自动导包
  String[] strs={"星期一","星期二","星期三","星期四","星期五","星期六","星期天"};
  Scanner sc=new Scanner(System.in);
  System.out.println("请输入一个整数 1----7");
  int num = sc.nextInt();
  String string=selectMethod(num,strs);
  System.out.println(string);
 }
 public static String selectMethod(int num,String[] strs) {
  if(num>=0&&num<=7){
   return strs[num-1];
  }else{ 
   return "请输入1---7之间的整数";
  } 
 }
}
基本查找法:
package org.westos.demo;
import java.util.Scanner;
public class MyTest8 {
 public static void main(String[] args) {
  int [] arr={1,3,3,44,4,4,45,5,5};
  int index=selectIndex(arr,4);
  System.out.println(index);
 }
 private static int selectIndex(int[] arr, int ele) {
  for(int i=0;i<arr.length;i++){
   if(arr[i]==ele){
    return i;
   }
  }
  return -1;//这是一个习惯:程序员约定俗成的习惯 ,如果找不到 就返回 -1 
 }
}
   自己写的一个电脑类

package org.westos.demo6;

public class Computer {

private String name;

private String color;

private int price;

public void PlayGame(String youximing){

System.out.println("用来玩"+youximing);

}

public void work(String biancheng){

System.out.println("用来"+biancheng);

}

public String getColor() {

return color;

}

public void setColor(String color) {

this.color = color;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getPrice() {

return price;

}

public void setPrice(int price) {

this.price = price;

}

}

类的使用

package org.westos.demo6;

public class ComputerTest {

public static void main(String[] args) {

Computer computer = new Computer();

computer.setName("华硕");

computer.setColor("黑色");

computer.setPrice(5000);

System.out.println("电脑的牌子是"+computer.getName());

System.out.println("电脑的颜色是"+computer.getColor());

System.out.println("电脑的价格是"+computer.getPrice());

computer.PlayGame("穿越火线");

computer.work("编程");

}

}

 










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值