转眼间玛雅预言的世界末日就已经过去了,或许这正是一个新纪元的开始,也是我开始踏上的人生的新的征程,只为不凡而来。
这次主要是总结之前学习的一些知识点,加上自己的一些理解,初来咋到,其中一些不太合理的地方还希望大家多加指点,谢谢。
1. JDK,JRE,JVM的区别和联系
JDK,也就是java语言的SDK,java软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。
JVM(Java Virtual Machine)Java虚拟机,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的
JRE(Java Runtime Environment)运行java程序所必须的环境的集合,包含JVM标准实现及Java核心类库。
三者是一个统一的整体,都是运行java程序所不可或缺的集合与环境,换句话说,JVM是实现这个整体运行的虚拟CPU,而JRE提供了动力,充当了显卡与内存的作用,使整个java体系更加完备与迅速的运行起来,JDK是核心内存,里面即包括了大量的java语言所需的类,又是整个体系的核心,没有了JDK,就相当于一台计算机没装操作系统,自然很多人不会运用。
2.类与对象的关系分析
都知道类是一个具有相同特征的物体的集合,对象的属性是实体自身所具有的性质,如具体的一个学生,他有身高,体重等特征,而我们所说的学生,却是指具有身高体重这些共同特征的类,类恰是这些对象的具体的生成模型,也就是说,从广义上来看,类是对象的抽象框架,对象是类的具体表达。而java语言恰是完全面向对象的程序设计,这一点与C语言有着本质的区别。
3.构造方法与一般方法的区别
构造方法(又名构造器方法)是一种为成员变量赋初值的专门方法,是一种特殊的成员方法,它的特殊性反应在以下几个方面:1.构造方法的名字必须与定义他的类名完全相同,没有返回类型,甚至连void也没有。2.构造方法的调用是在创建一个对象时使用new操作进行的。构造方法的作用是初始化对象。 3.每个类可以有零个或多个构造方法.4.不能被static、final、synchronized、abstract和native修饰。构造方法不能被子类继承。 5.构造方法在初始化对象时自动执行,一般不能显式地直接调用.当同一个类存在多个构造方法时,java编译系统会自动按照初始化时最后面括号的参数个数以及参数类型来自动一一对应。完成构造函数的调用。构造方法可以被重载。没有参数的构造方法称默认构造方法与一般的方法一样,构造方法可以进行任何活动,但是经常将他设计为进行各种初始化活动,比如初始化对象的属性。要注意的是每个类都会默认的有一个无参的构造方法,但如果重新写了一个有参数的构造器,则默认的无参构造方法不能被调用,除非在类定义中显式声明。
4.方法的重载与重写的区别
在一个类中可以定义多个同名,但参数类型和数量不同的方法,在使用的时候通过对方法体传相应的参数来调用同名的但作用不同的方法,如:
public class Student {
private String name;
public void setName(String n){
name=n;
}
public void study(){
System.out.println(name+"在学习");
}
public void study(int hour){
System.out.println(name+"学习了"+hour+"小时");
}
}
public class Manager {
public static void main(String args[]){
Student stu=new Student();
stu.setName("张三");
stu.study();
stu.study(5);//通过传值来调用不同的study方法
}
}
方法的重写是子类在继承的时候重写父类的方法,这样在执行的时候就可以调用子类中特定的方法,而不是父类中方法,如:
public class Student {
private String name;
public void study(){
System.out.println("Student类中学习方法,学生的名字是"+name);
}
public void setName(String n){
name=n;
}
public String getName(){
return name;
}
}
public class UNStudent extends Student{
public void study(){
System.out.println("UNStudent学习,要独立名字"+getName());
}
}
public class Manager {
public static void main(String args[]){
Student stu=new Student();
stu.setName("我是学生");
stu.study();
UNStudent uns=new UNStudent();
uns.setName("我是大学生");
uns.study();
}
}
5. 为什么需要继承?如何继承?继承到什么?
就如上面所讲的,子类继承父类,会默认的继承父类中的所有方法和结构体,这样的话,子类在定义的时候即使不写任何方法也会具有和父类一样的属性和方法,继承恰是可以这样,使一类具有相同特征的整体,能够定义出相同的方法,简化程序设计的复杂度以及重复的操作,同样,子类在继承的时候也可以重写父类的方法来定义特有的方法,提高程序的便捷性。
6.自动转型和强制转型
小范围的数据类型值可以通过赋值运算直接转换成为大范围的原始数据类型,这种转型方法称为自动转型,而大范围的数据类型要转换为小范围的数据类型时就要进行强制转型,强制转型很可能碰到值溢出的情况,一般情况下不推荐使用。
7.关于子类特有方法的调用
在继承的时候,子类不光可以定义父类中已有的方法,还可以定义本身的方法,在子类中,通过定义子类特有的方法,来产生与父类不同的方法体,这一点与方法的重写不同,方法的重写是在子类中定义父类已有的方法,再对父类的方法进行重定义,来产生不同的结果,在调用时,可以通过调用特有方法来完成自己的事件。如可在上述UNStudent中定义一个cet4()的方法,在调用时可以使用uns.cet4()来调用这个方法。
8.多态的理解
多态是指相同类型的对象调用相同的方法的时候,由于继承和重写机制,得到的结果不一定相同。比如说,上述程序中,如果再定义一个ComStudent来继承UNStudent,然后再重写父类中的方法,得到的结果又会不一样,具体实现如下:
public class ComStudent extends UNStudent{
public void study(){
System.out.println("计算机专业学生学习名字"+getName());
}
}
public class Teacher {
//教授两名学生的方法
public void teach(UNStudent stu1,ComStudent stu2){
stu1.study();
stu2.study();
}
}
public class Manager {
public static void main(String args[]){
UNStudent uns=new UNStudent();
uns.setName("我是大学生");
ComStudent com=new ComStudent();
com.setName("计算者");
Teacher te=new Teacher();
te.teach(uns,com);
}
}
10.常用swing组件举例
在javax.swing.*;文件包下有着大量的swing组件,通过对不同组件的使用能够完成许多事件,具体代码如下:
import javax.swing.*;
public class FrameTextField {
public static void main(String args[]){
FrameTextField ft=new FrameTextField();
ft.show();
}
public void show(){
//创建一个窗口
JFrame jf=new JFrame();
//创建流式布局管理器
java.awt.FlowLayout fl=new java.awt.FlowLayout();
jf.setLayout(fl);
//创建菜单栏
JMenu mu1=new JMenu("文件");
JMenu mu2=new JMenu("资源");
JMenuBar mu3=new JMenuBar();
//创建一个单选按钮菜单项
JRadioButtonMenuItem rbm=new JRadioButtonMenuItem();
//创建标签
JLabel la1=new JLabel("账号");
JLabel la2=new JLabel("密码");
//创建输入框
JTextField tf1=new JTextField(20);
JTextField tf2=new JTextField(20);
//创建一个单选按钮
JRadioButton rb=new JRadioButton();
//创建滚动条
JScrollBar sb=new JScrollBar(0);
//创建按钮选项
JButton loginbu=new JButton("登录");
JButton cancelbu=new JButton("取消");
jf.add(mu1);
jf.add(mu2);
jf.add(mu3);
jf.add(rbm);
jf.add(la1);
jf.add(tf1);
jf.add(la2);
jf.add(tf2);
jf.add(loginbu);
jf.add(cancelbu);
jf.add(sb);
jf.add(rb);
jf.setTitle("文本");
jf.setSize(600, 400);
jf.setVisible(true);
jf.setDefaultCloseOperation(3);
}
}