这是JAVA中的一个作业,
效果图:
画框中共有六个球,它们碰到墙之后能够反弹,而且相互碰撞之后能相互碰撞。
要用到的知识:
1. awt画图,要把球画出来
public void draw(Graphics g){
Color c = g.getColor(); g.setColor(Color.red);
g.fillOval(x, y, d, d);
g.setColor(c);
}
2. 线程对球的重画
class MyThread implements Runnable{
public void run() {
while(true){
repaint();
try {
Thread.sleep(150);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
源代码:
1. 球(Ball)类:
import java.awt.*;
public class Ball {
public static final int d = 30;//球的直径是30
int x=100,y=100;//球所在的位置
private do ......
java语言是解释执行,java源码是通过编译生成一种特殊的.class的中间字解码文件,然后再有JVM进行解释执行。
java语言对指针进行了上层的封装,它保证能够通过这个指针(引用),来访问有效的内存单元。
java语言不允许多继承,使继承关系成树装图,每个类都只能由一个父类。
java语言的开发效率高,但执行效率低。(相当于c++的55%)
java的垃圾回收机制,在java中new的对象不需要向c++一样进行delete操作,JVM会根据情况回收垃圾对象。(懒汉机制,等待资源没有的时候才回收)我们只能够建议JVM进行垃圾回收,例如(System.gc() RunTime.gc()这两个方法就是建议JVM进行垃圾回收
的方法)
JDK,java开发工具包(类库和运行命令),JRE,java运行环境,JVM,java虚拟机(解释执行的核心,对字节码进行翻译成运行环境的机器码,它可以屏蔽平台差异。JVM是不跨平台的。)
JAVA_HOME,指明JDK安装的位置,CLASSPATH,指明类文件的位置,PATH,指明命令的可执行文件的位置。
java源文件的文件名必须和文件中定义public class的类名(大小写页要相同)相同。
java源代码中的main方法的定义写法。main方法是程序的入口。
public static void main(String[] args){
& ......
在类中定义的方法在返回值前加上static修饰符就可以在main方法中调用了。如果不用static那就需要在main方法中创建对象,使用对象来调用对象的方法。
public class Test{
public static void main(String[] args){
Test t=new Test();
int b=1;
int c=2;
int[] a=new int[10];
t.sqort(a);
add(b,c)
}
public int[] sqort(int[] a){
.......
}
static int add(b,c){
.......
}
}
java中的运算符(java的运算符的优先级和结合性和c++相同)
System.out.println(3/2) 按整型计算 得1
1) >>= 前面是零补零,前面是一补一;
2) >>>= 无符号右移(强制右移都会移进一), // 前面填补0
>>=和>>>=对于负数不一样
正数:右移n位等于除以2的n次方
负数:变成正数。
3) && 短路与,前面为假,表达式为假,后面的操作不会进行,& 会对所有条件进行判断。
4) ||   ......
面向对象的思想
anything is Object(万物皆对象)
抽象,从对具体的对象中抽取有用信息。
对象有其固有属性,对象的方法,即对象的行为(对象能做什么)
对象本身是简单的(功能简单),多个对象可以组成复杂的系统(对象之间彼此调用对方的方法)
对象应当是各司其职(功能简单),各尽所能(把自己的功能作到最好)。(弱耦合性实现了前面所述的对象的特点)
对象的耦合性,是对象之间的联系,对象和系统之间的联系。对象的耦合性要尽量的弱,也就是对象之间的联系尽可能的弱,对象和系统之间的联系尽可能的弱。
系统的可插入性,是在系统中加入新的对象之后的系统稳定性。
对象的可替换性,是在系统中替换原有的对象之后的系统的稳定性。
复用性,即对象可否被重复使用,对象的功能越简单,复用性就越好。(对象的耦合性弱,复用性就比较强)
面向过程是先有算法,后又数据结构(怎么解决问题)
面向对象是先有对象(数据结构),后有算法。(用什么做)
类是某些有着相同属性的集合的抽象。
类是一个类对象的模板,对象是类的具体化。
类是一个新的数据类型,类的对象。
注意:局部变量的作用范围是在定义他的代码块以内,局部变量要先赋值后使用,在以一 ......
面向对象的三大特征:封装、继承、多态。
java中的封装
封装,一个对象和外界的联系应当通过一个统一的接口,应当公开的公开,应当隐藏的隐藏。(对象的属性应当隐藏),一个对象的内部是透明的,就是把对象内部的可透明性和隐藏的特性区分开,该透明的透明,该隐藏的隐藏。
(封装的属性)java中类的属性的访问权限的默认值不是private,要想隐藏该属性或方法,就可以加private(私有)修饰符,来限制只能够在类的内部进行访问。
对于类中的私有属性,要对其给出一对方法(getXxx(),setXxx())访问私有属性,保证对私有属性的操作的安全性。
方法的封装,对于方法的封装,该公开的公开,该隐藏的隐藏。方法公开的是方法的声明(定义),即(只须知道参数和返回值就可以调用该方法),隐藏方法的实现会使实现的改变对架构的影响最小化。。
封装会使方法实现的改变对架构的影响最小化。
完全的封装,类的属性全部私有化,并且提供一对方法来访问属性。
java中的继承
继承,是对有着共同特性的多类事物,进行再抽象成一个类。这个类就是多类事物的父类。父类的意义在于可以抽取多类事物的共性。
java中的继承要使用extends关键字,并且java中只允许单继承,也就是一个 ......
java中的修饰符
static 表示静态,它可以修饰属性,方法和代码块。
1,static修饰属性(类变量),那么这个属性就可以用 类名.属性名 来访问,也就是使这个属性成为本类的类变量,为本类对象所共有。这个属性就是全类公有。(共有的类变量与对象无关,只和类有关)。
类加载的过程,类本身也是保存在文件中(字节码文件保存着类的信息)的,java会通过I/O流把类的文件(字节码文件)读入JVM(java虚拟机),这个过程成为类的加载。JVM(java虚拟机)会通过类路径(CLASSPATH)来找字节码文件。
类变量,会在加载时自动初始化,初始化规则和实例变量相同。
注意:类中的实例变量是在创建对象时被初始化的,被static修饰的属性,也就是类变量,是在类加载时被创建并进行初始化,类加载的过程是进行一次。也就是类变量只会被创建一次。
2,static修饰方法(静态方法),会使这个方法成为整个类所公有的方法,可以用类名.方法名 访问。
注意:static修饰的方法,不直接能访问(可以通过组合方式访问)本类中的非静态(static)成员(包括方法和属性),本类的非静态(static)方法可以访问本类的静态成员(包括方法和属性),可以调用静态方法。静态方法要慎重使用。在静态方 ......