文档库 最新最全的文档下载
当前位置:文档库 › java基础知识回顾

java基础知识回顾

java基础知识回顾
java基础知识回顾

Java学习笔记(3-21——4-2)

1、Java是一种程序设计语言,也包括程序开发和运行环境。

2、JA V A好处:加快开发速度、一次编写到处运行(跨平台运行)、支持多线程、提供一个更简单的途径(简化开发)纯面向对象

3、Java对外无指针对内有(JVM是由C++语言实现的)

4、Jdk配置:

CLASSPATH 类路径(配置到lib目录)

PATH 路径系统路径(配置到bin目录)目录文件在PATH配置就可以让可执行文件在所有目录下运行,所以bin要配置到PA TH

备注:

1). 代表当前目录,必须要配(配置在CLASSPATH中)

2)提示java不是内部命令不是可执行应用程序或者提示不能找到某个文件,则可能是环境变量设置有问题

3)编译没问题但仍然提示NoClassDefFoundError可能是CLASSPATH配置出问题

5、Java的三种机制

1)java的虚拟机

JA V A跨平台就是因为JVM不同,Windows与Linux系统的JDK不同,JVM不同

2)垃圾回收机制

Java中用new运算符负责申请内存,释放内存是JVM通过gc机制(垃圾回收)完成。程序员只有建议权,可提出释放内存,但决定权在虚拟机。建议提出https://www.wendangku.net/doc/682331106.html,ng.System.gc()/https://www.wendangku.net/doc/682331106.html,ng.Runtime.getRuntime.gc(),可以向JVM提出建议,提出释放内存垃圾。

3)代码安全性检查

编译成*.class通过类加载器(把.class加载到内存,并且优化存在JIT[just in time]即用的时候才加载)——字节码校验(第一次类加载时校验)(1.是否遵守JVM规范2.判断是否破坏系统完整性3.是否有堆栈溢出4.参数类型书写是否正确5.类型转换是否正确)——交给解释器,解释执行

6、标识符、关键字、运算符

1)标识符用来给类、方法或变量起名称,汉字也可以用来做标识符。

2)const和goto在java中留而不用,是保留的关键字。true、false、null是保留字,但不是关键字,但还是不能做标识符。

3)

移位:

>> (右移)<<(左移)移位运算针对二进制整数前补0,负数补1

>>>无符号右移负数右移一位先变成正数

Eg:int i=7;//00000111

System.out.ptintln(7>>2);//00000001=1 右移2位相当于除4

System.out.println(7<<2);//00011100=28 左移2位相当于乘4

System.out.println(7>>34);//1 在移位前会先对32/64取余数,34%32=2

System.out.println(7>>-30);//1 对于移位是负数先+32/64转成正数再运算

++必须用于变量5++不行因为5是常量,i++可以

a++(--):先运算再++,运算取++前的数若a=5 则运算取5;

++(--)a:都先++(--)再进行其他运算,运算时取的是++后的数若a=5 则运算时取6 7、数据类型

java中的数据类型分为基本数据类型和复杂数据类型两类。

基本数据类型包括数值型(byte、short、int、long、float、double),字符型(char)及布尔型(boolean)。

复杂数据类型包括类,接口和数组等,也称引用类型,即通过对象的创建,获得引用类型的值。

注意:1)Java认为所有的整数都是int型

2)Java认为所有的浮点数都是double

8、Java注释格式

1)//注释内容单行注释(以//开始。到行末结束是注释)

2)/*注释内容*/ 多行注释

3)/**注释内容*/ 文档化多行注释

注意:2与3区别,3叫文档化注释,可以用javadoc命令抽取出去,大多用3

9、程序的结构

顺序、分支、循环

分支语句:

· if、if…else、if..else if..else

· switch、case、default、break

循环语句

· while(布尔表达式){语句}、do{语句} while(布尔表达式)

· for(;;){if(布尔表达式)break; } //死循环,加按条件的break,可以实现次数不确定循环。

while(true){条件}

、面向对象

break、continue语句:它们的不同之处在余continue语句只是结束本次循环,然后重新开始下一次的循环;而break则立即结束本层循环。

10、数组

需要存储多个数据,借助数组(元素是固定的)或集合(元素是不固定的)

1.数据在数组中的位置叫数组下标(索引),从0开始。下标不同,对应的元素不同

2.每一个数据叫做数组元素,元素的个数叫数组长度。0=<下标<数组长度

3.数组是一个整体,由同一类型数据组成,属于引用类型。

声明数组时,并没有创建一个对象

格式1. int[] arr;(常用) int[]是变量类型,说明是一整形数组arr是变量名

2.int arr[]; 容易误解成整型

当定义数组(new)以后,数组元素有默认值:boolean型是false,数字默认值是0,不同精度的0或者0.0;引用类型默认值是:null ,char默认值是…\u0000?表示第一个字符

二维数组:由一位数组组成,数组元素是一维数组的,只能是同一类型的。

定义int[][] arr=new int[n][];定义长度只要定义有几个一维数组就可以,要在第一个[]中指明后面的[]要定义的是一维数组的长度(可以不定义)

Eg:int[][] arr=new int[5][];//一维数组无长度,无法分配内存空间,只能取默认值,引用类型默认是null,会导致空指针异常

11、核心:万事万物都是对象。对象(object)归类按事物类型——类。对象是客观存在的,类是抽象的。编写代码用类,使用时用对象。事物特征:属性。事物行为:方法。类——对象(创建对象)

编程思想

1)看到所有的学生——对象

2)分类——学生类

3)分析特征——属性(有选择)定义属性类型和变量名

4)分析行为——方法(有选择)

12、内存分类

1)栈内存(地址,基本类型值)类似于目录后进先出,先进后出(抽屉放书取书)

2)堆内存(对象,地址,基本类型值都可以放进去)

3)寄存器(中间数字数字运算)

4)(方法构造)代码段

5)池内存(常驻内存的对象)

类引用对象

Student s = new Student() JVM先找栈再通过栈再找堆,gc回收的是堆,

1)s要先放进栈,Student s表示声明,s以Student形式

2)new Student()是一个堆,里面有一个Student对象

3)通过等号栈中的s指向堆中的对象

13、变量分类:

成员变量(属性)声明直接在类体括号中;成员变量中由static修饰的叫类变量,类变量在本类的括号中任何一个位置使用;无static修饰的叫做实例变量,实例变量可以在本类中非static的地方使用。所有的成员变量(属性)都有一个默认值,和数组元素默认值一样。局部变量:声明不是直接在类体括号中,叫局部变量,其作用域声明所在的{}中可以使用Eg:

public class TestField{

int a1=2;//实例变量,有static修饰的地方不能使用

static int a=2;//类变量,可以在任何位置使用

public void test(int a3)//局部变量,只能在括号内

{

int a2=2;//局部变量,只能在括号内

for(int i=0;i<5;i++){//i的作用范围

}

}

}

14、值传递(引用的值不可变,引用的值的内容可变)

Java 编程语言只有值传递参数,也就是说,参数不能由被调用的方法来改变。当一个对象实例作为一个参数传递到方法中时,参数的值就是对象的引用。对象的内容可以在被调用的方法中改变,但对象引用是永远不会改变的。

15、面向对象的三个基本特征是封装、继承和多态

1)封装:a.隐藏信息b.使方法的实现细节不可见c.统一对所有用户的接口d.提高效率2)继承:通过已有的类去扩展新的类。

3)多态:同一类域的不同对象在调用相同方法的时候表现不同的现象(针对对象的行为而言)。

16、封装:所有非常量属性基本都需要封装

1.私有属性,用private

2.提供public方法操作属性,用读/写方法(get/set)

3.在构造中调方法

封装好处:

1.可以隐藏类的实现细节,

2.对所有用户提供统一接口

3.保证属性安全有效

4对以后的维护拓展有效

Eg:

public class student{

String name;

private int age;//类外隐藏,对类外提供读getAge/写setAge方法public student(){};//无参构造

public student(String name,int age)//全参构造

{https://www.wendangku.net/doc/682331106.html,=name;

//this.age=age;不好,

setAge(age);//写一次其他地方调用(代码复用)

setName(name);

}

public void setName(String name){

https://www.wendangku.net/doc/682331106.html,=name;

}

public String getName()

{

return name;

}

public int getAge(){

return age;

}

public void setAge(int age)

{

if(age>0&&age<130)

{

this.age=age;//this.age代表属性age,age是局部变量

}else{

System.out.println("不合理年龄");

}

}

17、继承:在面向对象程序设计中,继承是不可或缺的一部分。通过继承可以实现代码的重用,提高程序的可维护性。

作用域修饰符:修饰符主要用于设置成员变量(包括成员方法)的访问权限。

修饰符同类同包子类所有类和包

public 能能能能

protected 能能能

默认能能

private 能

1)子类可以继承父类中所有可被子类访问的成员变量和成员方法,但必须遵循以下原则:(1)子类能够继承父类中被声明为public和protected的成员变量和成员方法,但不能继承被声明为private的成员变量和成员方法;

(2)子类能够继承在同一个包中的由默认修饰符修饰的成员变量和成员方法;

(3)如果子类声明了一个与父类的成员变量同名的成员变量,则子类不能继承父类的成员变量,此时称子类的成员变量隐藏了父类的成员变量;

(4)如果子类声明了一个与父类的成员方法同名的成员方法,则子类不能继承父类的成员方法,此时称子类的成员方法覆盖了父类的成员方法。

2)构造方法的继承:假如在一个类中定义了构造方法,而由这个类派生出来的子类也定义了构造函数,则生成新的子类对象的时候,构造方法的执行情况:在执行子类的构造函数之

前,先执行父类的构造函数。这样的执行顺序可以保证子类对象从父类对象继承得到的成员能够进行正确的初始化。

18、重写:方法覆盖即子类中直接定义和父类同名的方法,但重新定义了方法体,即子类与父类方法的形参,返回值都相同,而内部处理不同。这中方法在使用过程中,Java虚拟机会根据调用这个方法的类来确定具体调用哪个方法。注意,用关键字final修饰的方法不能重写。

方法的重载:即在同一个类中定义了多个同名的方法,但有不同的形参,而且每个方法有不同的方法体。一个方法的特征仅包括“方法的名字”,“参数的数目及类型”,而不包括“方法的返回类型”,“参数的名字”及“抛出的异常”。编译器也会根据这些条件判断两个方法是否重载方法。

19、抽象类

1.抽象类中不一定有抽象方法。

2.含有抽象方法的类一定是抽象类

抽象类:1.强制性,必须要继承重写 2.规范性重写规范

20、接口

Interface接口用于解决多重继承例如黄金属于货币也属于金属,但是货币与金属无继承。接口不是类,但可以看做是一种特殊的抽象类。

与抽象类区别:1.接口是多继承,抽象类是类是单继承;

2.接口使用interface关键字,抽象类使用class关键字;

3.接口无构造,抽象类有构造;

4.接口里面所有的属性都是常量,而且由public static final修饰,抽象类属性不是。

5.接口中所有的方法都是public abstract,但是抽象类中的方法可以不是抽象方法(有抽象方法的一定是抽象类)

共同点:接口大多数情况当抽象类使用

类和类之间用extends 是单继承

类和接口用implents 多继承

接口和接口之间用extends多继承

abstract与static修饰方法不能一起,因为类名.调用不行,也不能与final一起,也不能与private 一起。

接口:接口的方法需要子类去重写

21、内部类

Java语言允许在类中定义内部类,内部类就是在其他类内部定义的子类。

1)内部类分为成员内部类、局部内部类、静态内部类、匿名内部类。

几种内部类的共性:

A、内部类仍然是一个独立的类,在编译之后会内部类会被编译成独立的.class文件,但是前面冠以外部类的类命和$符号。

B、内部类不能用普通的方式访问。内部类是外部类的一个成员,因此内部类可以自由地访问外部类的成员变量,无论是否是private的。

2)成员内部类(不能被public修饰):形式如下

class Outer {

class Inner{}

}

编译上述代码会产生两个文件:Outer.class和Outer$Inner.class。

成员内部类内不允许有任何静态声明!下面代码不能通过编译。

class Inner{

static int a = 10;

}

能够访问成员内部类的唯一途径就是通过外部类的对象!只有创建了成员内部类的实例,才

能使用成员内部类的变量和方法。

Eg: Sample s = new Sample();

s.Innner inner = s.new Inner();

3)局部内部类:局部内部类和局部变量一样,都是在方法内定义的,其有效范围只在方法内部有效。局部内部类可以访问它的创建类中的所有成员变量和成员方法,包括私有方法。

Eg:

Public class outer{

public void doSomething(){

final int a =10;

class Inner{

public void seeOuter(){

System.out.println(a);

}

}

Inner in = new Inner();

in.seeOuter();

}

public static void main(String[] args) {

Outer out = new Outer();

out.doSomething();

}

}

4) 静态内部类:静态内部类和静态变量类似,它都使用static关键字修饰。

一般格式为:

public class Sample {

static class Apple { // 静态内部类

}

}

静态内部类可以在不创建Sample类的情况下直接使用。

Eg:class Outer{

static class Inner{}

}

class Test {

public static void main(String[] args){

Outer.Inner n = new Outer.Inner();

}

}

5)匿名类就是没有名称的内部类,它经常被应用于Swing程序设计中的事件监听处理。A、继承式的匿名内部类。

class Car {

public void drive(){

System.out.println("Driving a car!");

}

}

class Test{

public static void main(String[] args) {

Car car = new Car(){

public void drive(){

System.out.println("Driving another car!");

}

};

car.drive();

}

}

结果输出了:Driving another car! Car引用变量不是引用Car对象,而是Car匿名子类的对象。建立匿名内部类的关键点是重写父类的一个或多个方法。再强调一下,是重写父类的方法,而不是创建新的方法。因为用父类的引用不可能调用父类本身没有的方法!创建新的方法是多余的。简言之,参考多态。

B、接口式的匿名内部类。

Public interface Vehicle {

public void drive();

}

Public class test{

public static void main(String[] args) {

Vehicle v = new Vehicle(){

public void drive(){

System.out.println("Driving a car!");

}

};

v.drive();

}

}

上面的代码很怪,好像是在实例化一个接口。事实并非如此,接口式的匿名内部类是实现了

一个接口的匿名类。而且只能实现一个接口。

C、参数式的匿名内部类。

Public class Bar{

void doStuff(Foo f){}

}

Public interface Foo{

void foo();

}

Public class Test{

static void go(){

Bar b = new Bar();

b.doStuff(new Foo(){

public void foo(){

System.out.println("foofy");

}

});

}

}

22、事件机制

1.event object:就是事件产生时具体的“事件”,用于listener的相应的方法之中,作为参数,一般存在于listerner的方法之中

2.event source:具体的接受事件的实体,比如说,你点击一个button,那么button就是event source,这样你必须使button对某些事件进行响应,你就需要注册特定的listener,比如说MouseEvent之中的MouseClicked方法,这时它就必须有了add方法

3.event listener:具体的进行监听的事件类,当有其对应的event object产生的时候,它就调用相应的方法,进行处理。在windows程序设计里边这种响应使用callback机制来实现的基本步骤:

(1)装载事件包。如:import java.awt.event.*;

(2)实现事件监听器所对应的接口。

如:class Xxx implements ActionListener

(3)对事件源(即组件)添加事件监听器。

如:btn.addActionListener(this);

(4)重写相应事件接口类中的方法。

23、范型的使用

范型的好处

1、一次性的开发、测试和部署代码,通过任何类型来重用它

2、编译器支持和类型安全

3、不会强行对值类型进行装箱和取消装箱,或者对引用类型进行向下强制类型转换,所以性能得到显著提高。

范型的用法:

;

T代表类型变量(八种基本类型的包装类和引用类型)

范型类可以有多个类型变量,eg public class Pairs{…};

(?是类型通配符);

采用通配符的原因是因为范型是协变的

范型是协变的:

List intList = new ArrayList();

List numberList = intList; // invalid

一个List不是一个List(正泛型不是协变的)。解决方案是使用类型通配符:

void printList(List l) {

for (Object o : l)

System.out.println(o);

}

List是任何泛型List的父类型,所以您完全可以将List、List传递给println()

(限定范型可使用类型)

类型变量的限定,T是XX的子类型,T和XX可以是类和接口;

一个类型变量或通配符可以有多个限定,eg:;

XX 用“&“分割,而逗号用来分割类型变量

;

未知类型变量是XX类型变量的子类型

Eg:表示类型未知,只知道是实现List接口的类,所以如果类型持有者实例化的对象不是实现List接口的类,则编译器会报告错误。例如以下这行无法通过编译:

A a = new A();

未知类型变量是XX类型变量的父类型;

Eg: 表示类型未知,只知道是Manager类的超类,所以如果传进来的类型变量不是Manager类得超类,则会报告错误。例如:传进来的类型变量是Boss;

Boss——>Manager——>Employee;

24、Java对象的强引用、软引用、弱引用和虚引用

1.强引用

如果一个对象具有强引用,那就类似于必不可少的生活用品,垃圾回收器绝不会回收它。当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足问题。

2.软引用(SoftReference)

如果一个对象只具有软引用,那就类似于可有可无的生活用品。如果内存空间足够,垃圾回收器就不会回收它,如果内存空间不足了,就会回收这些对象的内存。只要垃圾回收器没有回收它,该对象就可以被程序使用。软引用可用来实现内存敏感的高速缓存。

软引用可以和一个引用队列(ReferenceQueue)联合使用,如果软引用所引用的对象被垃圾

回收,Java虚拟机就会把这个软引用加入到与之关联的引用队列中。

3.弱引用(WeakReference)

如果一个对象只具有弱引用,那就类似于于可有可无的生活用品。弱引用与软引用的区别在于:只具有弱引用的对象拥有更短暂的生命周期。在垃圾回收器线程扫描它所管辖的内存区域的过程中,一旦发现了只具有弱引用的对象,不管当前内存空间足够与否,都会回收它的内存。不过,由于垃圾回收器是一个优先级很低的线程,因此不一定会很快发现那些只具有弱引用的对象。

弱引用可以和一个引用队列(ReferenceQueue)联合使用,如果弱引用所引用的对象被垃圾回收,Java虚拟机就会把这个弱引用加入到与之关联的引用队列中。

4.虚引用(PhantomReference)

"虚引用"顾名思义,就是形同虚设,与其他几种引用都不同,虚引用并不会决定对象的生命周期。如果一个对象仅持有虚引用,那么它就和没有任何引用一样,在任何时候都可能被垃圾回收。

虚引用主要用来跟踪对象被垃圾回收的活动。虚引用与软引用和弱引用的一个区别在于:虚引用必须和引用队列(ReferenceQueue)联合使用。当垃圾回收器准备回收一个对象时,如果发现它还有虚引用,就会在回收对象的内存之前,把这个虚引用加入到与之关联的引用队列中。程序可以通过判断引用队列中是否已经加入了虚引用,来了解被引用的对象是否将要被垃圾回收。程序如果发现某个虚引用已经被加入到引用队列,那么就可以在所引用的对象的内存被回收之前采取必要的行动。

在https://www.wendangku.net/doc/682331106.html,ng.ref包中提供了三个类:SoftReference类、WeakReference类和PhantomReference 类,它们分别代表软引用、弱引用和虚引用。ReferenceQueue类表示引用队列,它可以和这三种引用类联合使用,以便跟踪Java虚拟机回收所引用的对象的活动。以下程序创建了一

个String对象、ReferenceQueue对象和WeakReference对象:

//创建一个强引用

String str = new String("hello");

//创建引用队列, 为范型标记,表明队列中存放String对象的引用

ReferenceQueue rq = new ReferenceQueue();

//创建一个弱引用,它引用"hello"对象,并且与rq引用队列关联

//为范型标记,表明WeakReference会弱引用String对象

WeakReference wf = new WeakReference(str, rq);

以上程序代码执行完毕,此时"hello"对象被str强引用,并且被一个WeakReference对象弱引用,因此"hello"对象不会被垃圾回收。

在以下程序代码中,把引用"hello"对象的str变量置为null,然后再通过WeakReference 弱引用的get()方法获得"hello"对象的引用:

String str = new String("hello"); //①

ReferenceQueue rq = new ReferenceQueue(); // ②

WeakReference wf = new WeakReference(str, rq); // ③

str=null; // ④取消"hello"对象的强引用, 此时"hello"对象只有弱引用了

String str1=wf.get(); // ⑤假如"hello"对象没有被回收,str1强引用"hello"对象

//假如"hello"对象没有被回收,rq.poll()返回null

Reference ref=rq.poll(); // ⑥

此时"hello"对象仅仅具有弱引用,因此它有可能被垃圾回收。假如它还没有被垃圾回收,那么接下来在第⑤行执行wf.get()方法会返回"hello"对象的引用,并且使得这个对象被str1强引用。再接下来第⑥行执行rq.poll()方法会返回null,因为此时引用队列中没有任何引用。ReferenceQueue的poll()方法用于返回队列中的引用,如果没有则返回null。

在以下程序代码中,执行完第④行后,"hello"对象仅仅具有弱引用。接下来两次调用System.gc()方法,催促垃圾回收器工作,从而提高"hello"对象被回收的可能性。假如"hello"对象被回收,那么WeakReference对象的引用被加入到ReferenceQueue中,接下来wf.get()

方法返回null,并且rq.poll()方法返回WeakReference对象的引用。图11-12显示了执行完第⑧行后内存中引用与对象的关系。

String str = new String("hello"); //①

ReferenceQueue rq = new ReferenceQueue(); //②

WeakReference wf = new WeakReference(str, rq); //③

str=null; //④

//两次催促垃圾回收器工作,提高"hello"对象被回收的可能性

System.gc(); //⑤

System.gc(); //⑥

String str1=wf.get(); //⑦假如"hello"对象被回收,str1为null

Reference ref=rq.poll(); //⑧

在以下的References类中,依次创建了10个软引用、10个弱引用和10个虚引用,它们各自引用一个Grocery对象。从程序运行时的打印结果可以看出,虚引用形同虚设,它所引用的对象随时可能被垃圾回收,具有弱引用的对象拥有稍微长的生命周期,当垃圾回收器执行回收操作时,有可能被垃圾回收,具有软引用的对象拥有较长的生命周期,但在Java虚拟机认为内存不足的情况下,也会被垃圾回收。

例程References.java

import https://www.wendangku.net/doc/682331106.html,ng.ref.*;

import java.util.*;

class Grocery{

private static final int SIZE = 10000;

//属性d使得每个Grocery对象占用较多内存,有80K左右

private double[] d = new double[SIZE];

private String id;

public Grocery(String id) { this.id = id; }

public String toString() { return id; }

public void finalize() {

System.out.println("Finalizing " id);

}

}

public class References {

private static ReferenceQueue rq = new ReferenceQueue();

public static void checkQueue() {

Reference inq = rq.poll(); //从队列中取出一个引用

if(inq != null)

System.out.println("In queue: " inq " : " inq.get());

}

public static void main(String[] args) {

final int size=10;

//创建10个Grocery对象以及10个软引用

Set> sa = new HashSet>();

for(int i = 0; i < size; i ) {

SoftReference ref=

new SoftReference(new Grocery("Soft " i), rq);

System.out.println("Just created: " ref.get());

sa.add(ref);

}

System.gc();

checkQueue();

//创建10个Grocery对象以及10个弱引用

Set> wa = new HashSet>();

for(int i = 0; i < size; i ) {

WeakReference ref=

new WeakReference(new Grocery("Weak " i), rq);

System.out.println("Just created: " ref.get());

wa.add(ref);

}

System.gc();

checkQueue();

//创建10个Grocery对象以及10个虚引用

Set> pa = new HashSet>(); for(int i = 0; i < size; i ) {

PhantomReferenceref =

new PhantomReference(new Grocery("Phantom " i), rq);

System.out.println("Just created: " ref.get());

pa.add(ref);

}

System.gc();

checkQueue();

}

}

浅谈提高《Java程序设计》教学效果的几点建议

浅谈提高《Java程序设计》教学效果的几点建议 【摘要】针对《Java程序设计》这门课的特点,并结合几年来在教学过程中的一些教学经验和体会,浅谈提高这门课程教学效果的几点建议,旨在增强学生的学习兴趣,以及实践编程能力,提高教学质量。 【关键词】面向对象;编程思想;教学效果;学习兴趣 Java是面向对象程序设计语言,具有面向对象、平台无关、安全、稳定和多线程等优良特性,是目前软件设计中优秀的编程语言。Java不仅可以用来开发大型的应用程序,而且特别适合于Internet的应用开发。如何使学生真正掌握有效的程序设计方法,成为应用型人才,是教师值得探讨的问题。本文结合作者的教学经验,浅谈提高教学效果的几点建议。 1培养学生的学习兴趣 夸美纽斯说:“兴趣是最好的老师,是学好一切的前提。”Java程序设计语言是一门相对枯燥的课程,如何培养学生的兴趣呢?首先教师可以演示比较成功的有趣项目,如在线聊天系统,网上商城项目,坦克大战等等,以此来吸引学生的注意力,调动其学习的积极性,其次根据教学内容设计出贴近教学生活的程序,如学生管理系统,最后要不断鼓励学生,通过这门课程的学习可以设计出属于自己的小游戏。 2培养面向对象编程思想 Java是纯面向对象程序设计语言,要想使学生学好Java这门课,最重要的是要掌握面向对象编程思想,而编程思想是在反复的实践、观察、分析、比较和总结中潜移默化积累的。在教学过程中,每一个教学实例都应遵循面向对象的思想精心设计,为学生做好示范,让学生切实感受到编程思想在解决实际问题中是如何体现的,同时要多找一些典型的源代码,在课堂上和学生一起分析别人的解题思路,提高学习效率,并引导学生用程序的方式来解决生活中的实际问题。 3多媒体教学和实验教学相结合 程序设计语言的教学目标是培养学生分析问题、解决问题和处理问题的能力,使其具有严谨的逻辑思维能力和独特的创新能力,学生应该通过实践不断提高自身能力。多媒体教学能以图文并茂的方式向学生呈现课堂内容,可以激发学生的学习兴趣,教师在每次授课前,应针对本节教学内容,精心编写尽可能与实际应用有关、且难易适中的教学案例,利用多媒体进行实例讲解并演示程序的运行过程,通过边讲边练,对提高学生编程能力有极大的帮助。为了更好地掌握所学知识点,可以给学生布置合理的习题,通过上机实验解决问题。在学习完Java 基础知识后,找一些小项目,按照开发项目的流程带领学生一起实验,在实际开发中深化所学知识点。对于一些大型的项目,可以适当考虑小组协作,在锻炼学生协作开发能力的同时培养了团队协作精神,有利于学生将来踏上工作岗位。 4积极引导,培养学生的自学能力 常言道:“授之以鱼,不如授之以渔”。Java语言涉及知识面广泛,而教学课时有限,引导、培养学生的自学能力是Java程序设计教学的重要内容。在教学过程中,要不断引导学生学习使用Java API文档,并有效利用网络平台查找资料解决问题。在上机实践时,鼓励学生发现问题后尽可能自己解决问题。 5培养学生良好的编程习惯 编程习惯是指编程者在程序设计过程中共同遵守的一些规则或者约定。在教

Java基础知识总结(超级经典)

Java基础知识总结 写代码: 1,明确需求。我要做什么? 2,分析思路。我要怎么做?1,2,3。 3,确定步骤。每一个思路部分用到哪些语句,方法,和对象。 4,代码实现。用具体的java语言代码把思路体现出来。 学习新技术的四点: 1,该技术是什么? 2,该技术有什么特点(使用注意): 3,该技术怎么使用。demo 4,该技术什么时候用?test。 ----------------------------------------------------------------------------------------------- 一:java概述: 1991 年Sun公司的James Gosling等人开始开发名称为 Oak 的语言,希望用于控制嵌入在有线电视交换盒、PDA等的微处理器; 1994年将Oak语言更名为Java; Java的三种技术架构: JAVAEE:Java Platform Enterprise Edition,开发企业环境下的应用程序,主要针对web程序开发; JAVASE:Java Platform Standard Edition,完成桌面应用程序的开发,是其它

两者的基础; JAVAME:Java Platform Micro Edition,开发电子消费产品和嵌入式设备,如手机中的程序; 1,JDK:Java Development Kit,java的开发和运行环境,java的开发工具和jre。 2,JRE:Java Runtime Environment,java程序的运行环境,java运行的所需的类库+JVM(java虚拟机)。 3,配置环境变量:让java jdk\bin目录下的工具,可以在任意目录下运行,原因是,将该工具所在目录告诉了系统,当使用该工具时,由系统帮我们去找指定的目录。 环境变量的配置: 1):永久配置方式:JAVA_HOME=%安装路径%\Java\jdk path=%JAVA_HOME%\bin 2):临时配置方式:set path=%path%;C:\Program Files\Java\jdk\bin 特点:系统默认先去当前路径下找要执行的程序,如果没有,再去path中设置的路径下找。 classpath的配置: 1):永久配置方式:classpath=.;c:\;e:\ 2):临时配置方式:set classpath=.;c:\;e:\ 注意:在定义classpath环境变量时,需要注意的情况 如果没有定义环境变量classpath,java启动jvm后,会在当前目录下查找要运

Java基础知识

一、填空题(每题1分,共50分) 1.Java程序可以分为两种基本的类型,分别是_________________和_________________。 2.如果一个类不显示地写上其继承的父类,则它的默认的直接父类是系统类_______________。 3.Java对内存的释放是采用____________________机制。 4.接口的所有成员方法都具有________________和________________属性。 5.设有一个Java应用程序,其源程序文件名为Test.java,则编译该源程序的命令是_________________________,运行该应用程序的命令为_________________________。 6.如果线程类A需要继承类B,而类B不是线程类,则需要通过接口类Runnable构造线程类A,类A的具体定义为 ___________________________________________________。 7.Java系统提供了方法____________________来强制立即回收垃圾。 8.运行以下语句后b的值是__________________。 String s1=“1234”; String s2=new String(“1234”); Boolean b=(s1 = = s2); 9.通过Connection实例对象的_____________________方法可以创建出Statement的实例对象。 10.JAVA小应用程序一般是_____________的子类。 11.JAVA语言通过____________机制简化了程序的内存管理。 12.JAVA字符(char)采用的是___________字符集。 13.面向对象的计算机语言一般应具有3个基本特性:____________、____________和______________。 14.JAVA语言中,捕获异常是通过________________语句结构来实现的。 15.编写线程程序主要是构造线程类,而构造线程类的方式主要有以下两种:(1)____________________________________________ (2)____________________________________________ 16.假设用JAVA语言为清华大学(网址为https://www.wendangku.net/doc/682331106.html,)编写了图像处理包image,那么按照SUN公司的建议,这个包的名称最好为_________________。 17.JAVA数据类型中,具体包括哪三种引用数据类型:___________、____________、______________。 18.JAVA程序以________为单位进行组织的。 19.如果没有显式的定义类的构造方法,则系统会为该类定义一个默认的构造方法,这个默认的构造方法的作用是_____________________________________。

史上最全Java基础知识点归纳

史上最全Java基础知识点归纳 写这篇文章的目的是想总结一下自己这么多年来使用Java的一些心得体会,主要是和一些Java基础知识点相关的,所以也希望能分享给刚刚入门的Java 程序员和打算入Java开发这个行当的准新手们,希望可以给大家一些经验,能让大家更好学习和使用Java。 这次介绍的主要内容是和J2SE相关的部分,另外,会在以后再介绍些J2EE 相关的、和Java中各个框架相关的内容。 经过这么多年的Java开发,以及结合平时面试Java开发者的一些经验,我觉得对于J2SE方面主要就是要掌握以下的一些内容。 1.JVM相关(包括了各个版本的特性) 对于刚刚接触Java的人来说,JVM相关的知识不一定需要理解很深,对此里面的概念有一些简单的了解即可。不过对于一个有着3年以上Java经验的资

深开发者来说,不会JVM几乎是不可接受的。 JVM作为Java运行的基础,很难相信对于JVM一点都不了解的人可以把Java语言吃得很透。我在面试有超过3年Java经验的开发者的时候,JVM几乎就是一个必问的问题了。当然JVM不是唯一决定技术能力好坏的面试问题,但是可以佐证Java开发能力的高低。 在JVM这个大类中,我认为需要掌握的知识有: JVM内存模型和结构 GC原理,性能调优 调优:Thread Dump,分析内存结构 class二进制字节码结构,class loader体系,class加载过程,实例创建过程 方法执行过程 Java各个大版本更新提供的新特性(需要简单了解) 2.Java的运行(基础必备) 这条可能出看很简单,Java程序的运行谁不会呢?不过很多时候,我们只是单纯通过IDE去执行Java程序,底层IDE又是如何执行Java程序呢?很多人并不了解。

技术大牛:如何提升Java效率的简单方法

技术大牛:如何提升Java效率的简单方法你是否正打算优化hashCode()方法?是否想要绕开正则表达式?下面我们来介绍10种简单的Java性能优化方法。 1、使用StringBuilder StingBuilder 应该是在我们的Java代码中默认使用的,应该避免使用+ 操作符。或许你会对StringBuilder 的语法糖(syntax sugar)持有不同意见,比如:String x = "a" + args.length + "b"; 将会被编译为: 0 new https://www.wendangku.net/doc/682331106.html,ng.StringBuilder [16] 3 dup 4 ldc [18] 6 invokespecial https://www.wendangku.net/doc/682331106.html,ng.StringBuilder(https://www.wendangku.net/doc/682331106.html,ng.String) [20] 9 aload_0 [args]10 arraylength11 invokevirtual https://www.wendangku.net/doc/682331106.html,ng.StringBuilder.append(int) : https://www.wendangku.net/doc/682331106.html,ng.StringBuilder [23]14 ldc [27]16 invokevirtual https://www.wendangku.net/doc/682331106.html,ng.StringBuilder.append(https://www.wendangku.net/doc/682331106.html,ng.String) : https://www.wendangku.net/doc/682331106.html,ng.StringBuilder [29]19 invokevirtual https://www.wendangku.net/doc/682331106.html,ng.StringBuilder.toString() : https://www.wendangku.net/doc/682331106.html,ng.String [32]22 astore_1 [x] 但究竟发生了什么?接下来是否需要用下面的部分来对String 进行改善呢? String x = "a" + args.length + "b";if (args.length == 1) x = x + args[0]; 现在使用到了第二个StringBuilder,而且这个StringBuilder 不会消耗堆中额外的内存,但却给GC 带来了压力。 StringBuilder x = new StringBuilder("a");x.append(args.length);x.append("b");if (args.length == 1); x.append(args[0]); 2、避免使用正则表达式

《Java编程基础知识点汇总及习题集》--答案

目录 第一章 Java入门 (2) 第二章 Java基础 (5) 第三章条件转移 (16) 第四章循环语句 (22) 第五章方法 (28) 第六章数组 (35) 第七章面向对象 (44) 第八章异常 (65)

第一章Java入门 知识点汇总 1、JAVA 三大体系 ?Java SE:(J2SE,Java2 Platform Standard Edition,标准版),三个平台中最核心 的部分,包含Java最核心的类库。 ?JavaEE:(J2EE,Java 2 Platform, Enterprise Edition,企业版),开发、装 配、部署企业级应用,包含Servlet、JSP、 JavaBean、JDBC、EJB、Web Service等。 ?Java ME:(J2ME,Java 2 Platform Micro Edition,微型版),用于小型电子设备 上的软件开发。 2、JDK,JRE,JVM的作用及关系 作用 ★JVM:保证Java语言跨平台 ★JRE:Java程序的运行环境 ★JDK:Java程序的开发环境 关系 ★JDK:JRE+工具 ★JRE:JVM+类库 3、JDK环境变量配置 ?path环境变量:存放可执行文件的存 放路径,路径之间用逗号隔开 ?classpath环境变量:类的运行路径, JVM在运行时通过classpath加载需要 的类 4、重点掌握两个程序 ?javac.exe:Java编译器工具,可以将编 写好的Java文件(.java)编译成Java 字节码文件(.class); ?java.exe:Java运行工具,启动Java虚 拟机进程,运行编译器生成的字节码 文件(.class) 5、一切程序运行的入口 public static void main(String args []){ System.out.println(“Hello World!”); } 课堂笔记

java基础知识分析

Java 思路 1写代码 1)明确需求,我要做什么? 2)分析思路。要怎么做?1 2 3。 3)确定步骤。每一个思路部分用到哪些语句,方法,和对象。 4)代码实现。用具体的java语言代码把思路体现出来 2学习新技术的四点 1)该技术是什么? 2)该技术有什么特点(使用注意) 3)该技术怎么使用。Demo 4)该技术什么时候使用?test。 一Java 概述: 1991年San公司的JamesGosilng(詹姆斯·高斯林) 等人开始开发名称为Oak的语言,希望用于控制嵌入在有线电视交换盒,PDA等的微处理器; 1994年将Oak语言更名为Java; Java的三种技术架构; JAVAEE:Java Platform Enterprise Edition,开发企业环境下的应用程序,主要针对wep程序的开发 JAVASE: Java Platform Enterprise Edition, 完成桌面应用程序的开发是其他两者的基础; JAVAME: Java DevelopmentKit, java的开发和运行环境,java的开发工具jre;

JDK, JRE: 1JDK:java DevelopmentKit , java的开发和运行环境,java的开发工具和jre。 2JRE:java Runtime Environment, java程序的运行环境,java运行的所需的类库+JVM(java 虚拟机)。 3配置环境变量:让java jdk\bin目录下的工具,可以在任意目录下运行,原因是,将该工具所在目录告诉了系统,当使用该工具时,由系统帮我们去找指定的目录。 1) 永久配置方式: JAVA_HOME=%安装路径%\Java\jbk Path=%JAVA_HOME%\bin 2) 配置临时方式: setpath=%path%C:\ProgramFiles\Java\jdk\bin 特点:系统默认先去当前路径下找要执行的程序,如果没有,再去path中设置路径下找。 classpath的配置: 1)永久配置方式:classpath=.;c:\;e:\ 2)临时配置方式:setclasspath=.c:\;e:\ 注意:在定义classpath环境变量时,需要注意的情况: 如果没有定义环境变量classpath,java启动jvm后,会在当前目录下查找要运行的类文件。如果指定了classpath,那么会在指定的目录下查找要运行的类文件。 还会在当前目录找吗?两种情况: 1)如果classpath的值结果有分号,在具体路径中没有找到运行的类,会默认在前目录 在找一次。 2)如果classpath的值结果处没有分号,在具体路径中没有找到运行的类,不会再当前 目录找。 一般不指定分号,如果没有在指定目录下找到想运行的类文件,就报错,这样可以调试程序4javac命令和java命令做什么事情呢? 要知道java是分两部分的: 一个人是编译,一个是运行。 Javac: 负责的是编译的部分,当执行javac时,会启动java的编译器程序。对指定扩展名的.java 文件进行编译。生成了jvm可以识别的字节码文件。也就是class文件也就是java的运行程序。 Java: 负责运行的部分.会启动jvm.加载运行时所需的类库,并对class文件进行执行. 一个文件要被执行,必须要有一个执行的起始点就是main函数(也叫方法)。

Novate 网络库:Retrofit2.0和RxJava的又一次完美改进加强

Novate 网络库:Retrofit2.0和RxJava 的又一次完美改进加强 介绍 Novate的改进 加入基础API,减少Api冗余 支持离线缓存 支持多种方式访问网络(get,put,post ,delete) 支持文件下载和上传 支持请求头参数统一添加 支持对返回结果的统一处理 支持自定义的扩展API 支持统一请求访问网络的流程控制 用法 基本构建: Novate novate = new Novate.Builder(this) .baseUrl(baseUrl) .build(); 除了基本的构建还提供更了其他API 构建你的header头和参数 Map headers = new HashMap<>(); headers.put("apikey", "4545sdsddfd7sds"); Map parameters = new HashMap<>(); parameters.put("uid", "878787878sdsd"); 实例化: Novate novate = new Novate.Builder(this) .addParameters(parameters) .connectTimeout(8) .baseUrl("you api url") .addHeader(headers) .addLog(true) .build(); 如果你需要接入证书: novate.addSSL(hosts, certificates)

怎么用? int[] certificates = {R.raw.myssl1, R.raw.myssl2,......} int[] hosts = {"https:// you hosturl2", "https:// you hosturl2",......} 还要说明? certificates是你的ssl证书文件的id,项目中请放到raw资源文件下,myssl.cer怎么生成,这个就不是我这边讲的内容,请用pc浏览器自动导出证书,保存, 还不清楚的话,我会醉醉。 同样很多人想问我想对novate进行扩展,咋办,别担心,Novate也提供了以下方法 novate.addInterceptor() .addCallAdapterFactory() .callFactory() .client() 不知道啥意思? 请对Retrofit去入门,Retrofit中怎么用,Novate就怎么用。 RxJava怎么处理? observable.subscribeOn(Schedulers.io()) .unsubscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()); 内部统一已进行线程控制,所有请求都采用以上线程形式,无语你手动添加。 Get 提供了novate.get()和novate.get()API 区别如下: executeGet 来执行get请求,此方法会解析返回你需要的bean实体 novate.get()不会帮你解析实体,需要你自己对返回数据解析进行序列化。 novate.executeGet("you url", parameters, new Novate.ResponseCallBack>() { @Override public void onError(Throwable e) { } @Override

Java基础知识总结

基础预备:低级基础 1.1 java基本类型 byte(字节) short(短整型) int(整型) long(长整型) float(浮点型) double(双精度) char(字符型) boolean(布尔型) 1.2值传递和引用传递的区别 值传递:实参初始化形参,两个存储单元不同,不影响实参的值 引用传递:实际参数与形式参数指向同一个地址,形式参数的改变将会影响实际参数1.3当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 是值传递。方法调用该对象引用的参数,参数被改变,但是引用不会改变 1.4 &和&&的区别。 &和&&都是逻辑「与」,&&只要第一个表达式是false就不会计算第二个表达式 &也可以作为运算符 2.1使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变 引用变量不能变,引用变量所指向的对象中的内容可以改变 2.2final类型可不可以不初始化,如果没有初始化的final类型应该在哪里初始化? final一定有初始值,没有初始化叫空白final 如果没有需要声明之后在其构造器中赋值 2.3 "=="和equals方法究竟有什么区别? 「==」是看两个对象引用是否指向同一个对象 「 equals() 」是比较两个对象的内容是否相等 3.1静态变量和实例变量的区别 静态变量的变量前加了static 的修饰,其中一个对象将它值改变,其他对象得到的就是改变后的结果; 实例变量的变量前没加static 的修饰,某一个对象将其值改变,不影响其他对象

3.2是否可以从一个static方法内部发出对非static方法的调用?为什么? 不可以。使用非static方法需要先创建对象,而使用static方法则不用 4.1 java中什么是自动装箱与拆箱呢? 自动装箱是某地方需要Integer类型,你传int类型会自动生成Integer, 反之Integer变int,就是自动拆箱 4.2 int 和 Integer 有什么区别 Int是基本数据类型,Integer是int的封装类。 原始类型封装类 Boolean Boolean Char Character Byte Byte Short Short Int Integer Long Long Float Float Double Double 5.1请说出作用域public, protected,以及不写时的区别 不写是表示friendly。 作用域当前类同一package 子孙类其他package public √√√√ protected √√√× friendly √√×× private √××× 6.1能不能自己写个类,也叫https://www.wendangku.net/doc/682331106.html,ng.String? 可以,但在应用的时候,需要用自己的类加载器去加载,否则,系统的类加载器永远只是去加载jre.jar包中的那个https://www.wendangku.net/doc/682331106.html,ng.String。 7.1 排序都有哪几种方法?请列举。用JAVA实现一个快速排序。 冒泡,选择,插入,快速 冒泡排序:

java基础知识点

第一天课程(2012-7-10) JAVA常用的名词 JVM java 虚拟机 Application 应用程序必须有一个入口的方法叫做public static void main(String[] args){} Applet 小应用程序该程序必须要内嵌在一个容器中运行,它有自己的生命周期 重点: JAVA的开发环境 JDK: java 开发工具集 JDK版本问题1.4不支持泛型5.0 泛型 6.0枚举 默认安装路径C:\Program Files\Java\ JRE: JAVA运行时环境 环境变量的配置 (1)Path:window寻找可执行应用程序的一个查找路径不同的路径之间使用; 来分隔 配置一个路径C:\Program Files\Java\jdk1.6.0_26\bin (2)CLASSPATH 告诉系统到那些目录下面去查找对应的要执行的文件 .;D:\3020\j2se\cx\chapter1 .表示当前目录 预习作业: 常用的DOS命令 切换目录查询文件拷贝文件重命名移动文件 *表示通配符*.java *.* 常用java命令 Javac 编译命令主要将以.java结尾的Java文件编译生成以.Class结尾的二进制字节码文件。 Javac java文件名.java Java 运行命令java 类名 Javadoc生成帮助文档命令 javadoc java文件 面向对象的基本概念

类 (属性方法构造方法 ) 对象对象创建传递销毁 面向对象的三大基本特性:封装、继承、多态 OOP AOP 类 是由客观事物经过大脑抽象而形成概念,是对一类事物的描述 使用class 关键字来描述类 类中有属性和方法: 属性对应的是事物的静态特性(可以叫做成员变量) 方法对应的是事物的动态特性 对象:是类的一个具体的实例化 创建对象对象的方法: 类名对象名= new 类名(); 调用类的构造方法来创建对象构造方法是特殊的方法:方法名=类名 注意: 类中属性和方法必须在创建对象之后才能使用 对象.属性对象.方法.表示引用 第二天课程 (2012-7-11) JAVA语言描述 类的声明 语法格式: [< modifiers>] class < class_name> { [] [] } 修饰词class类名{ 属性定义部分<可选> 构造方法 <可选> 普通方法 <可选> } 用于修饰class的关键字有两种:(1) public 公共的 (2)缺省不写表示当前类只能在同一个包中使用 注意点:(1)一个java文件中最多只能有一个类被public 修饰,并且要求使用public

java基础知识速成教程

数据类型 (1) 基本数据类型 (1) 引用类型 (3) 控制语句 (3) 顺序结构 (3) 选择结构 (3) 循环结构 (4) 面向对象 (5) 面向过程和面向对象的区别 (5) 类和对象 (5) 成员变量 (5) 方法 (5) 方法的重载(overload) .................................................................... 错误!未定义书签。 构造方法 (7) 内存分析 (7) package (9) import (10) this (10) static (11) super (11) 面向对象的三大特征 (11) 封装 (11) 继承 (12) 方法的重写(override) (12) 多态 (12) 抽象类 (14) 接口 (14) 面向接口编程......................................................................................... 错误!未定义书签。 本站已经对文档保护进行限制了,取消文档保护密码为:https://www.wendangku.net/doc/682331106.html, 步骤:进入word 工具---》取消文档保护 数据类型 基本数据类型 a)数值型 i.整型 1.byte 1个字节(256) -128-127 2.short 2个字节(65536) 正负3万 3.int 4个字节正负21亿 4.long 8个字节

ii.浮点型 1.float 4个字节 2.double 8个字节 注: 类型的自动转换 b)字符型2个字节65536 unicode字符集 c)布尔型

java基础知识点总结

Created by AIwen on 2017/5/14、 java就是面向对象的程序设计语言;类可被认为就是一种自定义的数据类型,可以使用类来定义变量,所有使用类定义的变量都就是引用变量,它们将会引用到类的对象。类用于描述客观世界里某一类对象的共同特征,而对象则就是类的具体存在,java程序使用类的构造器来创建该类的对象。 java也支持面向对象的三大特征:封装、继承、与多态。java提供了private、protected、与public三个访问控制修饰符来实现良好的封装,提供了extends关键字让子类继承父类,子类继承父类就可以继承到父类的成员变量与与方法,如果访问控制允许,子类实例可以直接调用父类里定义的方法。继承就是实现类复用的重要手段。使用继承关系来实现复用时,子类对象可以直接赋给父类变量,这个变量具有多态性。 面向对象的程序设计过程中有两个重要的概念:类(Class)与对象(object,也被称为实例,instance)。类可以包含三种最常见的成员:构造器、成员变量、与方法。 构造器用于构造该类的实例,java语言通过new关键字类调用构造器,从而返回该类的实例。构造器就是一个类创建对象的根本途径,如果一个类没有构造器,这个类通常无法创建实例。因此java语言提供了一个功能:如果程序员没有为一个类编写构造器,则系统会为该类提供一个默认的构造器,这个构造器总就是没有参数的。一旦程序员为一个类提供了构造器,系统将不再为该类提供构造器。 构造器用于对类实例进行初始化操作,构造器支持重载,如果多个重载的构造器里包含了相同的初始化代码,则可以把这些初始化代码放置在普通初始化块里完成,初始化块总在构造器执行之前被调用。静态初始化块代码用于初始化类,在类初始化阶段被执行。如果继承树里某一个类需要被初始化时,系统将会同时初始化该类的所有父类。 构造器修饰符:可以就是public、protected、private其中之一,或者省略构造器名:构造器名必须与类名相同。 注意:构造器既不能定义返回值类型,也不能使用void声明构造器没有返回值。如果为构造器定义了返回值类型,或使用void声明构造器没有返回值,编译时不会出错,但java会把这个所谓的构造器当成方法来处理——它就不再就是构造器。 实际上类的构造器就是有返回值的,当使用new关键字来调用构造器时,构造器返回该类的实例,可以把这个类的实例当成构造器的返回值。因此构造器的返回值类型总就是当前类,无须定义返回值类型。不要在构造器里显式的使用return来返回当前类的对象,因为构造器的返回值就是隐式的。 java类名必须就是由一个或多个有意义的单词连缀而成的,每个单词首字母大写,其她字母全部小写,单词与单词之间不要使用任何分隔符。 成员变量: 成员变量的修饰符:public、protected、private、static、final前三个只能出现一个再与后面的修饰符组合起来修饰成员变量,也可省略。 成员变量:由一个或者多个有意义的单词连缀而成,第一个单词首字母小写,后面每个单词首字母大写,其她字母全部小写,单词与单词之间不要使用任何分隔符。 类型:可以就是java语言允许的任何数据类型,包括基本类型与引用类型。 成员方法: 方法修饰符:public、protected、private、static、final、abstract,前三个只能出现一个,static与final最多只能出现其中的一个,与abstract组合起来使用。也可省略。 返回值类型:可以就是java语言的允许的任何数据类型,包括基本类型与引用类型。 方法名:与成员变量的方法命名规则相同,通常建议方法名以英文动词开头。 方法体里多条可执行语句之间有严格的执行顺序,排在方法体前面的语句总先执行,排在方法体后面的语句总就是后执行。

如何提高文档编写能力

如何提高文档编写能力 分享一篇博文如何提高文档编写能力 在我身边的程序员中,无论是现在的同事还是过去的同事,普遍缺乏文档编写能力或能力严重不足,甚至有些编程能力很强的程序员也不能写出一篇可读性较强的设计说明书、产品手册等项目必备文档。其实,文档如何才能提高文档编写能力编写能力是成为优秀程序员和项目经理必须具备的能力,想要和更多人人进行交流只能通过你的文字来传达你的思想。该如何才能提高文档编写能力呢,可以采用了以下几种方法,只要坚持不懈的做下去,相信会有提高。 1、尝试编写个人简历和经历,用文字来认识自己是不错的方法。要想别人认识你,首先自己要认识自己。 2、养成良好的程序注释习惯,而且要用准确的语句描述注释的内容,从写注释的一句话开始锻炼文字表达能力。准确而简明的注释有助本人和他人阅读你的程序代码,语义不清或者错误的注释反而浪费了自己和他人的时间。 3、从编写较简单的文档(如:《XXX系统使用说明》)开始,锻炼文档编写的组织能力和文字表达能力 4、写博客。其实这也是我写博客的原因之一,想通过多写文章,用文字来准确的表达日常自己的所思所想来提高文档能力。还可以通过他人的评论和建议来改正不足之处。 5、阅读书籍和文章时除了学习里面的知识和技术外,还可以研究研究作者是怎么组织一篇文章和一本书籍的,通过怎样的一个内容结构来表达相关内容. 6、阅读一些写作技巧方面的文章提升技术文档编写能力也是显而易见的。 当然,要切实提高文档编写能力,需要勤于学习、勤于思考、勤于实践、长期积累,毕竟丰富知识和阅历才是写好文档的基础。 ///////////////////////////////////////////////////////////////////// 如果提高自己的文档书写能力,像技术方案,概要设计,建议书,PPT. 对于一个问题,我见过牛人,写了几十页来讲解,我却挤了很久才挤出几个字来。 按照重要程度和先后顺序相结合回答如下: 1,考虑听的人看得人需求在哪里,什么样的东西是他们需要的,他们想要什么?比如你写一个方案给老板,就要从老板的角度考虑问题,是不是解决了他现在碰到的问题,你提出的解决方案考虑了执行了没有,执行的成本分析了没有,执行的过程中会碰到什么问题,执行中如何控制进度,执行后如何评估效果等等。 不管是技术方案,概要设计,建议书,PPT都要首先严肃认真的考虑这个问题。这一步特别的重要,当你站在自己的角度写出来的东西都是碰大运。 2,从这个思路开始,你要引入第一个工具,mindmap,如果你不熟悉,到维基百科查阅,软件可以到各种下载站找,有很多免费的mindmap工具

java基础知识练习

1.Java语言特点是什么? Java语言具有如下特性:简单性、面向对象、分布式、解释型、可靠、安全、平台无关、可移植、高性能、多线程、动态性等。 2.什么叫Java虚拟机?什么叫Java平台?Java虚拟机与Java平台的关系如何? Java虚拟机(Java Virtual Machine) 简称JVM 。Java虚拟机是一个想象中的机器,在实际的计算机上通过软件模拟来实现。Java虚拟机有自己想象中的硬件,如处理器、堆栈、寄存器等,还具有相应的指令系统。 3.Java程序是由什么组成的?一个程序中必须有public类吗?Java源文件的命名规则是怎样的? 一个Java源程序是由若干个类组成。一个Java程序不一定需要有public类:如果源文件中有多个类时,则只能有一个类是public类;如果源文件中只有一个类,则不将该类写成public 也将默认它为主类。源文件命名时要求源文件主名应与主类(即用public修饰的类)的类名相同,扩展名为.java。如果没有定义public类,则可以任何一个类名为主文件名,当然这是不主张的,因为它将无法进行被继承使用。另外,对Applet小应用程序来说,其主类必须为public,否则虽然在一些编译编译平台下可以通过(在BlueJ下无法通过)但运行时无法显示结果。 4.开发与运行Java程序需要经过哪些主要步骤和过程? (1) 下载、安装J2SDK; (2) 设置运行环境参数:JA V A_HOME、PATH、CLASSPATH; (3) 使用文本编辑器编写原代码如HelloWorld.java; (4) 运行命令“javac HelloWorld.java”编译HelloWorld.java为HelloWorld.class; (5) 运行“java HelloWorld”生成HelloWorld.exe。 5.怎样区分应用程序和小应用程序?应用程序的主类和小应用程序的主类必须用public修饰吗? Java Application是完整的程序,需要独立的解释器来解释运行;而Java Applet则是嵌在HTML编写的Web页面中的非独立运行程序,由Web浏览器内部包含的Java解释器来解释运行。 两者的主要区别是:任何一个Java Application应用程序必须有且只有一个main方法,它是整个程序的入口方法;任何一个Applet小应用程序要求程序中有且必须有一个类是系统类Applet的子类,即该类头部分以extends Applet结尾。 应用程序的主类当源文件中只有一个类时不必用public修饰,但当有多于一个类时则主类必须用public修饰。小应用程序的主类在任何时候都需要用public来修饰。 6.安装JDK之后如何设置JDK系统的PATH,CLASSPATH?他们的作用是什么? (1)PATH环境变量。设置环境变量path是因为window xp是多用户操作系统,支持不同用户的个性化系统定制,这里设置的信息只影响当前用户,而不会影响其他用户。假如只有一个用户,只是运行.class文件,则也不需要设置path环境,因为JDK安装之后会把java.exe 等几个关键文件复制到c:\windows\system32目录中,而此目录已经存在于path变量,所以说用户变量path随不同用户而设置的,设置路径:“D:\jdk1.5\bin ”。PATH环境变量作用是指定命令搜索路径,在命令行下面执行命令如javac编译java程序时,它会到PA TH变

java工程师技术总结

java工程师技术总结 各位读友大家好,此文档由网络收集而来,欢迎您下载,谢谢篇一:研发部java开发工程师2015年工作总结 2015年年度总结 尊敬的领导: 您好!在2015年11月我很荣幸地进入公司,加入了研发部Java技术开发团队,认识了友善严谨的领导、热心和睦且技术优秀的同事,很是开心。在这一年里通过自身的努力,不断完善自己的知识结构,向同事虚心请教开发技术上的问题,较快地熟悉了公司采用的技术框架和业务知识。 通过公司日常培训学习和工作积累我对公司业务也有了一定的了解,在各方面也有了进步。目前在参与项目开发的工作中,我负责XXX功能模块开发。新年伊始,特向过去的一年2015年工作总结汇报如下:根据公司的安排,项目

的需要,通过在XXX项目开发中的锻炼,我成长了,也认识到了自己的不足之处。在自身的努力、领导的帮助,团队的合作下,克服重重技术困难,增长了工作经验,收获颇多。从入公司以来我就开始学习基于代码生成器免费开源的开发框架以及Maven项目管理工具的使用,曾经接触过的框架比较熟悉的有SSH,表现层的实现技术freemaker、JSP。个人优势就是曾在XXX行业针对XXX 业务用SpringMVC框架开发管理系统,缺点是没有用过Activity工作流技术。Hibernate框架,没有用到过多表关联动态查询和hql查询。印象较深刻的就是多对多关联表查询需要用到构造函数的方法来查。新接触的项目中我主要涉及到的开发模块有(具体描述功能模块)XXX 等功能。 工作中的经验总结如下: 1.对业务流程的梳理上,最全面的范文参考写作网站代码没有写活,考虑的问题不全面。后来在讨论时经过同事的

JAVA基础知识考核(含答案)

JAVA基础知识考核题 班级:姓名:成绩:一、选择题(80分,每题2分) 1.J ava编译器的命令是( D ) A.java B. appletviewer C. jdb D. javac 2. Java解释器的命令是( A ) A.java B. appletviewer C. jdb D. javac 3. Java开发人员使用的开发工具包是( C ) A.JVM B. JRE C. JDK D. Eclipse 4. 下列说法正确的是( B ) A. 使用Java语言开发的程序可以在任何平台下运行,且不需要JRE B. 使用Java语言开发的程序可以在任何平台下运行,但需要JRE C. Java虚拟机是独立的,JDK中不包含虚拟机 D. Java语言编译后是字节码文件,操作系统可直接执行 5. 下列全部是合法的Java标识符的是( B ) A. 09stu teacher $money B _salary post123 name C case abstract final D #ID list today 6. 程序中有如下语句 final float PI = 3.14f; 下列说法正确的是( C ) A PI 是一个变量,初始化的值是3.14. B 定义有错误,PI 是float类型3.14后不能加f C PI 是一个常量,其值是3.14 D 对PI可以重新赋值,如PI = 3.1415926; 7 下列初始化值正确的是(B ) A float score = 90.5; B boolean flag = false; C char name = "张三"; D boolean num = 1; 8. 有如下代码