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关键字声明)
public void readFromFile() throws IOException, SecurityException
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];