1对象的行为:
1.1内存分配(栈和堆的区别)
栈:保存局部变量的值(用来保存基本数据类型的值,保存类的实例的引用)
堆:用来存放动态产生的数据,比如new出来的对象
1.2调用方法
>方法返回一个值,返回一个基本数据类型或引用类型传给方法调用者
>方法不返回值,返回值声明为void
>方法抛出一个异常给方法的调用者
1 public class Date{
2 public int day,month,year;
3
4 public int getDay(){//返回整型
5 System.out.println("在getDay方法内部");
6 return day;
7 }
8 public void printDate(){//不返回值
9 System.out.println("在printDate方法内部");
10 System.out.println(month+"/"+day+"/"+year);
11 }
12 }
1.3方法签名 包括:1)访问修饰符,public、private、protected以及默认访问修饰符
> public在本类、同包不同类、子类以及不同类中可以调用
> protected在本类、同包不同类以及子类中可以调用
> defuacule在本类以及同包不同类可以调用 (默认情况)
> protected只有在本类中可以调用
2)可选修饰符static、final、abstract、native、synchronized、native
> 用static修饰的为静态成员,为类的所有对象共享(分配1个空间);在静态方法中,只能直接调用静态成员,不能直接调用非静态成员;成员方法中,可以直接调用静态成员与非静态成员。
3)返回值(方法签名必须包括返回值的类型,如不需要返回值则使用void)
4)方法名(方法签名必须出现在返回值之后,可以为任何有效Java标识符)
5)形式参数列表(在方法名的后面必须是用一对括号括起来的形式参数列表)
6)抛出的异常列表(方法可以抛出一个异常给方法调用者,如果方法抛出一个受检查的异常,该异常必须在方法签名中使用throes关键字声明)
1.4形式参数与实际参数以及按值调用
形式参数列表:用于声明传递到方法中的数据类型
实际参数:传递给形式参数的数据
按值调用:当实际参数传递给形式参数时,实际参数的数据被复制给形式参数,在方法调用之间复制数据的过程称为按值调用
1.5方法重载
含义:一个类有两到多个同名但是有不同参数列表的方法
要求:参数类型不同、参数个数不同、参数列表不同
public class Calculator{
public int multiply(int x ,int y ){
System.out.println("整数与整数相乘");
return x * y;
}
public double multiply(double x double y ){
System.out.println("实数与实数相乘");
return x * y;
}
public double multiply(int x ,double y ){
System.out.println("整数与实数相乘");
return x * y; }
}
1.6构造器(构造方法)
用途:在对象实例化时被调用,初始化对象中的成员变量
属性:名字与类名一致,不能声明返回值,也不能返回void
注意:1)默认情况下,类中有一个无参构造方法;2)当写出带参构造方法系统默认的无参构造方法就不再生成
格式:
1 public class Radio{
2 public int volume;
3 public Radio(){}//无参构造器
4 public Radio(int x){//带参构造器
5 volume=x;
6 }
7 }
在构造器中使用this
1 public class Radio{
2 public int volume;
3 public int channel;
4 public Radio(){
5 this(4,10);
6 }//无参构造器
7 public Radio(int c){//带参构造器
8 this(c,10);
9 }
10 public Radio(int c,int v){//带参构造器
11 volume = v;
12 channel = c;
13 }
14 }
* 用this关键字构造器调用其他构造器,但this语句必须是构造器中的第一句可执行语句;
2数组:
2.1数组:
含义:存储在一个连续的内存块中的元素集合,每个元素是相同的数据类型,通过索引进行区分
创建数组:
>声明一个数组的引用
》 数据类型 [] 数组名; (推荐)或 数据类型 数组名 []; // int [] sums; 或 int sums[];
* 此时sums为一个引用,可以指向任何一个int类型的数组,不管数组中有多少元素,可以赋值为null
>使用new关键字初始化数组,并指定数组大小
》 数组名 = 数据类型 [长度] // sums= int sums[20];
*此时sums被new关键字初始化,其值为默认值()
声明并分配空间:
> double[] temps=new double[30];
声明并分配空间时元素初始化:
> int score=new int[]{1,2,3....}; 或者 int[] score={1,2,3....};
2.2数组长度
常见错误:ArrayIndexoutofBoundsException:数组下标越界
length属性代表数组的大小:
1 public void register(){
2 int sums = new int[20]; 3 System.out.println(users.length); 4 for(int i = 0; i < users.length; i++){
5 System.out.println(i); 7 } 8 } 9
foreach:用于数组组成或集合遍历
1 public void showAllUsers(){
2 for (User user : users) {
3 if (user != null)
4 System.out.println(user);
5 }
6 }
2.3引用数组
Java中有九种类型的数组:八种基础数据类型数组和引用类型数组
1 /**
2 * employee员工类
3 */
4
5 public class Employee{
6 public String name; // 姓名
7 public String gender; // 性别
8 public int age; // 年龄
9 public Employee(){}//无参构造器
10 public Employee(String name,String gender, int age){
11 this.name = name;
12 this.gender= gender;
13 this.age= age;
14 }
15 }
16
17
18 /**
19 * 数组演示
20 */
21 public class Emp{
22 int [] sums = new int[20]; // 基础数据类型数组
23 Employee em = new Employee[20]; // 引用类型数组
24 }
2.4数组初始化
使用new关键字初始化数组,并指定数组大小
> 数组名 = 数据类型 [长度] // int [] sums= int sums[20];
声明并分配空间:
> double[] temps=new double[30];
声明并分配空间时元素初始化:
> int score=new int[]{1,2,3....}; 或者 int[] score={1,2,3....};
1 public class Emp{
2 int [] sums = new int[20]; 3 int [] temps = new int[]{1,2,3...};
4 int [] score = {1,2,3...};
5 }
2.5多维数组
同一维数组一样,多维数组也是对象,需要一个引用,该引用是在数据类型和变量名之间用多个中括号来声明的
二位数组:
int [][] sums = new int [10][10];