1 9-8
package cyhomework.september.control;
/*
* 演示类:对话框
*/
import javax.swing.JOptionPane;
public class JOptionPaneDemo {
public String content;
public void inputDialog() {
content = JOptionPane.showInputDialog(null, "你随便输入一些字");
}
public void inforDialog() {
JOptionPane.showMessageDialog(null, content);
}
public static void main(String[] args) {
JOptionPaneDemo demo = new JOptionPaneDemo();
demo.inputDialog();
demo.inforDialog();
}
}
1.1 对话框
//将输入的字符串转成整型
int number = Integer.parseInt(content);
//将整型转成字符串型
content=String.valueOf(number);
1.2 方法调用栈:
一个方法被调用时,将导致控制流程转到被调用的方法并执行方法中的语句。在执行方法中的语句时,如果又有其他方法被调用,将导致控制流程转到其他方法并执行方法中的语句。当方法中的语句执行完成,控制流程将回到调用方法的位置,继续执行方法后其他的语句。异常将导致退出方法。
java时纯面向对象编程语言,java中的方法只能出现在类。
在java中,没有申明为静态(static)的方法,只能通过类实例化对象的方式被调用。
如果想编写一个不需要类实例化对象方法,我们需要使用静态方法。
public 访问修饰符 static 可选修饰符 void 返回类型main 方法名 (String[]args) 参数列表。
1.3 按值调用。
当实际参数传递给形式参数时,实际参数的数据被复制(拷贝)给形式参数,这个过程称为按值调用。
不管传递给方法的实际参数是什么类型,相关的形式参数都会得到该数据的一份,这就是按值调用的工作原理。
当实际参数传递给形参的时候,如果实参是引用类型,按值传递的是对象的引用(地址)而不是对象被传入,结果是引用(地址)被复制了。而不是对象被复制。这样,实际参数和形参都引用同一个对象。
1.4 方法重载
当一个类有两道多个同名但是有不同参数列表的方法是,就是方法重载。
重载一个方法,只要方法的形式参数列表对编译器来说是截然不同的,从而使编译器能自动区分我们想要调用的方法是哪一个。
作用是实现功能类似而所处理的数据类型不同的问题。它简化了代码,方便程序员调用,体现了面向对象编程的优越性。
1.5 构造器:
在java程序中,程序如果不显示定义构造器,那么编译器会在编译的时候自动添加一个无参的构造(默认构造器)。这就是即使我们没显示定义构造器,仍然可以实例化对象。
但是,如果程序员显示定义了构造器后,编译器在编译时就不会自动添加无参构造器,因此,如果定义了带参数的构造器后,无参的构造器需要再显示定义,否则无法使用。
构造器是一个特殊的方法,它在类创建一个实例化时自动被调用执行。
构造器的目的是初始化类的实例,使其成为一个有效的状态。只要是一个对象被创建,这个对象必须是有构造器中的数据成员正确地初始化为一个有效的状态。
构造器的名称必须要与类名称相同。
构造器是一个没有返回值的方法。
构造器可以有多个;支持方法重载。
构造器具有不同的参数个数
1.6 this关键字
防止命名冲突, this表示引用对象本身。
对象名.属性 .方法
public int x;
public void setX(int x){
this.x=x
}
注意3点
1调用时必须放在构造器的第一个语句
2一个构造器最多调用一个构造器
3不能再构造器以外的任何方法中调用构造器
2 数组
2.1 小技巧
查找打开ctrl+shift+R
查看类下面的方法和属性ctrl+o
2.2 声明数组的方式:
int[] sums;
int sums [];
使用new关键字初始化数组,并制定数组的大小.
语法: 数组变量=new 数组类型[数组长度];
例如 sums=new int[20];
数组在内存中是地址连续的一串空间。
Java语言的数组与其他语言的数组的不同之处在于:Java中的数组是对象。这样做的好处之一为:java中的每个数组都有一个length属性来代表数组的大小。可以极大地减少数组访问越界的可能性。
2.3 静态初始化:
数组初始化程序在创建数组时,有两种写法
int[]odds=new int []{1,3,5,7,9};
String[] weekend=new String[]{"星期六","星期天"};
或者,不需要使用new关键字.
String[]weekend={"星期六","星期天"};
值得注意的是:数组初始化程序只能用在声明新数组引用时.
for(int i=0;i<this.num.length;i++){
this.num[i]=num[i];
}
System.arraycompy(num,0,this.num,0,5);()中五个参数
第一个是要复制的原数组名,
第二个是原数组的下标索引起始位置,
第三个是要复制的目标数组名,
第四个是要复制的目标数字的下标索引起始位置。
第五个是要复制的数组的元素个数。
2.4 引用数组的复制
2.4.1 浅复制 浅拷贝
通过拷贝目标数组元素的值,完成拷贝.这种拷贝的特点是 原数组与目标数组的对应元素指向同一对象.这种方式叫浅拷贝.
2.4.2 深复制 深拷贝
目标数组通过实例化对象,赋值给数组元素.
将原数组指向对象的成员数据复制给目标数组元素指向的对象.
用深拷贝需要谨慎使用,因为需要更多的内存空间.