1.java文件的基本结构
编译-->运行
1)编译:.java源文件-->Javac编译-->.class文件(二进制代码)
2)运行java程序-->Jvm装载文件-->Jvm运行类文件
2.java中的数据类型
1)基本数据类型
<1>.byte 字节型 8bits
<2>.int 整 形 32bits
<3>.short 短整型 16bits
<4>.long 长整形 64bits
<5>.char 字符型 16bits
<6>.float 浮点型 32bits
<7>.double 双精度浮点型 64bits
<8>.boolean 布尔型 true/flase
附:①自动转型:小范围的类型值可以通过赋值运算直接转换为大范围的原始类型
byte-->short-->char-->int -->long-->float-->double
②强制转型:将大范围类数据类型转化为小范围的数据类型(注:不应超过小范围数据类型的表示范围)
float f = 1003.26 ;
double d = f ; //自动转型
int i = (int) d ; //强制转型
byte b = (byte) i ; //错误,强制转化时不应超过小范围数据类型的表示范围
2)数组类型:详见下文
3)引用类型(类类型):自定义类、java中已定义的类(所有类的父类:Object)
基本类型 类类型
int ---->Integer
例: /**
* 定义一个整形类的对象
* 优点:可以调用整形类中定义的函数
* 缺点:占内存多
*/
Integer te = new Integer(10);
char --->Character
byte --->Byte
... --->...
3.类与对象的关系分析
1)类是一个模板:类是一组对象的抽象,提取了这些对象的共同点,类中定义了具体对象所共有的方法和属性,通 过这个模板生成具体的对象,调用每个对象自己的方法,改变的就是具体对象的属性值
2)对象是类的具体事例:通过类,可以创建多个对象
Student st1 = new Student();
4.如何定义一个类:属性+方法
/**
* 学生类
* @author hpw
*
*/
public class Student {
/**
* 设置学生姓名及学号
*
* @param name
* :姓名
* @param num
* :学号
*/
public void setName(String name, int num) {
this.name = name;
this.num = num;
}
/**
* 学习的方法
*/
public void study() {
scro++;
System.out.println(name + "学习中!学号为:" + num);
}
/**
* 玩的方法
*/
public void play() {
scro--;
System.out.println(name + "正在玩!学号为:" + num);
}
/**
* 统计分数的方法
*/
public void addscro() {
System.out.println(name + " 学号为:" + num + " 学分为:" + scro);
}
// 学生的名字属性
private String name;
// 学生的学号属性
private int num;
// 学生的学分属性,初始化为0
private int scro = 0;
}
5.创建对象的方式
1)无参:类名+对象名 = new 类名()
有参:类名+对象名 = new 类名(参数1,参数2,…)
2)类名+对象名;
对象名=new 类名()/new 类名(参数1,参数2,…);
Student st1=new Student();
等价于:Student st1;
st1=new Student();
6.构造方法的作用,特点,构造方法与一般方法的区别
1)作用:在创建对象时,就可以初始化对象内部属性的值
2)特点:构造方法没有任何返回值的定义,而且方法名必须与类名字相同,创建对象时,构造方法只被调用一次
注:每个类都有一个默认的无参构造器,但如果重写了一个有参构造器,则无参构造器不被调用,除非在类中显示声明
3)与一般方法的区别:
①构造方法是在创建对象时被调用,而一般方法是执行对象的特定行为时被调用
②构造方法与类名相同,一般方法不能与类名相同
③构造方法无返回值,一般方法有返回值
7.为什么需要继承?如何去继承?继承到了什么?
8.类,抽象类,接口的特点,区别
9.方法的重载与重写
10.自动转型与强制转型
以上详见博文 《类的继承,接口》:http://hu19911021-163-com.iteye.com/blog/1066352
11.多态的理解
1)使用多态之后,当需要增加新的子类类型时,无需更改父类,程序的可扩展性及可维护性增强
2)多态具有表现多种形态的能力
3)对同一个指令,执行不同的操作,调用不同的方法
12.常用的界面开发组件
1)容器类:位于 javax.swing 下的 : JFrame(窗体类) JPanel(面板类)
位于 java.awt 下的 : Frame(窗体类) Panel(面板类)
2)组件类: ① javax.swing ② java.awt
JLabel JLabel 标签类
JTextField JTextField 输入框类
JButton JButton 按钮类
JComboBox JComboBox 下拉列表类
JCheckBox JCheckBox 复选框类
3)布局器:流式布局器 位于 java.awt.FlowLayout 下
13.事件监听机制的理解
1)找到监听的事件源对象
2)根据需要监听的事件实现对应的监听器接口
3) 创建监听器对象
4)将监听器对象绑定在事件源对象上
14.数组
1)一维数组:int t[] = new int[10]; int t[] = new int[]{1,2,3,4,5,6}; int t[] = {1,2,3,4,5,6}; 2)二维数组:int[][] a = new int[10][8]; int[] a[] = new int[10][8];
15.队列:长度可变的数组
private String[] str=new String[0]; /** * 往数组中添加元素 * @param s:添加的元素 */ public void add(String s){ //使数组元素+1 String[] str1=new String[str.length+1]; //将添加的元素放到最后 str1[str1.length-1]=s; for(int i=0;i<str.length;i++){ str1[i]=str[i]; } str=str1; } /** * 获取数组元素 * @param index:要获取的下标 * @return */ public String get(int index){ String s=str[index]; return s; } /** * 求数组的长度 * @return */ public int size(){ return str.length; } /** * 移除数组中的一个元素 * @param index */ public void remove(int index){ String[] str1=new String[str.length-1]; //下标前的元素 for(int i=0;i<index-1;i++){ str1[i]=str[i]; } //下标后的元素 for(int i=index-1;i<str.length-1;i++){ str1[i]=str[i+1]; } str=str1; } /** * 向数组中插入一个元素 * @param s:要插入的元素 * @param index:要插入的下标 */ public void insert(String s, int index){ String[] str1=new String[str.length+1]; //下标前的元素 for(int i=0;i<index;i++){ str1[i]=str[i]; } str1[index]=s; //下标后的元素 for(int i=index;i<str.length;i++){ str1[i+1]=str[i]; } str=str1; } /** * 修改指定位置的元素 * @param s:修改后的元素 * @param index:要修改元素的下标 */ public void modify(String s,int index){ str[index]=s; }
泛型队列:
private Object[] str=new Object[0]; /** * 往数组中添加元素 * @param s:添加的元素 */ public void add(E e){ //使数组元素+1 Object[] str1=new Object[str.length+1]; //将添加的元素放到最后 str1[str1.length-1]=e; for(int i=0;i<str.length;i++){ str1[i]=str[i]; } str=str1; } /** * 获取数组元素 * @param index:要获取的下标 * @return */ public E get(int index){ E e=(E)str[index]; return e; } /** * 求数组的长度 * @return */ public int size(){ return str.length; } /** * 移除数组中的一个元素 * @param index */ public void remove(int index){ Object[] str1=new Object[str.length-1]; //下标前的元素 for(int i=0;i<index-1;i++){ str1[i]=str[i]; } //下标后的元素 for(int i=index-1;i<str.length-1;i++){ str1[i]=str[i+1]; } str=str1; } /** * 向数组中插入一个元素 * @param s:要插入的元素 * @param index:要插入的下标 */ public void insert(E s, int index){ Object[] str1=new Object[str.length+1]; //下标前的元素 for(int i=0;i<index;i++){ str1[i]=str[i]; } str1[index]=s; //下标后的元素 for(int i=index;i<str.length;i++){ str1[i+1]=str[i]; } str=str1; } /** * 修改指定位置的元素 * @param s:修改后的元素 * @param index:要修改元素的下标 */ public void modify(E s,int index){ str[index]=s;
}
18.值传递与引用传递的理解
1)值传递:通过复制号(=)进行传递,传递后双方不再建立有联系,一方的改变不影响到另一方
2)引用传递:引用传递传递的是地址,传递完成后,双方地址相同,一方发生改变,因地址相同,另一方也 会发生相应的改变