方法的格式: 权限修饰符 状态修饰符号 返回值类型 方法名(参数列表){方法体}
方法的调用 方法名();
方法的重载:允许一个类中 出现多个同名的方法 但是要参数个数或参数类型不同
类中要有成员变量和成员方法:
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
递归的注意事项:递归要有出口,不然就是死递归
递归的次数不能过多
在日常中,能使用循环可以解决的问题就用循环,使用递归可能会
出现死递归而且递归次数过多还会出现栈溢出
局部变量存在栈内存,局部变量:定义在方法中的变量,或者方法声明上(形参)的变量
所有new 出来的东西都存在堆内存
面向对象:万物皆对象 new对象,调方法
类 class 最小的单位 类其实就是对 成员变量(属性) 成员方法(功能)的封装
类 是一个抽象的概念,我要用他里面的功能和属性,必须对其实例化,所谓实例化就是创建该类的对象
如果你看到一个方法要一个类 类型的参数,你就得传一个该类的对象(引用)
如果你看到一个方法要一个返回值类型是 类 类型你就传一个该类的对象(引用)
形式参数
基本类型:形式参数的改变不影响实际参数
引用类型:形式参数的改变直接影响实际参数
匿名对象:没有名字的对象,只想调用一次方法 就可以使用匿名对象
出于数据安全和合理性方面的考虑,我们应该屏蔽掉这种设置成员变量值的方式(对象名.成员变量名)
我们可以用一个权限修饰符去修饰一下, 用一个关键字private, private 修饰了成员变量,成员方法,
提供一个公共的 set方法用来设置值 再提供一个公共的 get方法用来获取值。
快捷键 shift+alt+s,选GettersAndSetters
当局部变量和成员变量重名的时候,我们可以用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++) {
}
// 方式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("编程");
}
}