您的位置:首页 > 编程语言 > Java开发

Java实用手册

2015-11-17 21:52 609 查看
##配置Java开发环境-Tomcat,MyEclipse

配置Windows版Tomcat服务器

到下载吧下载tomcat绿色安装包

下载后解压到某个PATH

新建一个系统变量,名为CATALINA_HOME,路径为PATH

启动Tomcat服务器:PATH\startup.bat; 停止Tomcat服务器:PATH\shudown.bat

打开
http://localhost:8080/
如看到Tomcat页面即配置成功

配置Tomcat默认打开的文件名

更改Tomcat的web.xml:

<welcome-file-list>
<welcome-file>/haha.jsp</welcome-file>
</welcome-file-list>

修改Tomcat端口号步骤

找到Tomcat目录下的conf文件夹

进入conf文件夹里面找到server.xml文件

打开server.xml文件

在server.xml文件里面找到下列信息

<Connector port="8080"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" />

5.把port="8080"改成port="8888",并且保存

配置MyEclipse

可观看教程:MyEclipse开发JavaWeb程序

修改项目的虚拟路径

查看教程:理解Web项目虚拟路径

Collection

Collection中的contains,containsAll方法,都会调用
equals()
来判断

HashSet和HashMap还会调用
hashCode()
方法来判断

因为默认equals只是会比较内存地址是否相同,但有时我们想要的效果是某些属性相同就可认为该俩对象是相等的,

所以很多时候我们需要用eclipse来生成
equals
hashCode
方法Override(Source->Generate hashCode() and equals()...),然后选择好想要比较的属性即可

利用
Arrays
把数组转换成list,也就是collection:

Arrays.asList(arr);

集合包括Collection和Map。Collection: List, Queue, Set; Map: HashMap

在集合中取出元素时类型都会为Object,故取出时需要转换类型

而利用泛型(规定某个集合只可以存放特定类型的对象,会在编译的时候检查),可以直接按指定类型获取集合元素,无须转换了

泛型不能使用基本类型,但可以使用基本类型的包装类

StringBuilder和StringBuffer

StringBuilder 和StringBuffer ,它们基本相似,不同之处,StringBuffer 是线程安全的,而 StringBuilder 则没有实现线程安全功能,所以性能略高。

因此一般情况下,如果需要创建一个内容可变的字符串对象,应优先考虑使用 StringBuilder 类

==与equals

String类的==和equals()的区别:

==:判断两个字符串在内存中首地址是否相同,即判断是否同一个字符串对象;

equals():比较存储在两个字符串对象中的内容是否一致

而Object类的==与equals都是比较内存地址是否相同。

##Java的多态

继承是实现多态的基础

有引用多态,方法多态

//引用多态
Animal ani = new Animal();
Animal ani2 = new Dog();

//方法多态
ani.eat(); // animal eat
ani2.eat(); // dog eat

//ani2.watchDoor()是不允许的

Java的多态的好处体现于,能把同一类的但又各自又不同的对象放在同一个数组里面:

NBATeam[] arr = {new Lakers(), new Clippers(), new Magics()};

##封装与继承

子类的构造方法必须调用父类的构造方法,如果没有调用,系统会默认调用父类的无参构造方法,但如果父类没有无参构造方法,就会报错了

定义了成员内部类,必须用外部对象来创建内部对象,不能直接new一个内部对象:

Outer o = new Outer();
Inner i = o.new Inner();

同时访问外部类的相同名的属性时,使用:
Outer.this.name


创建静态内部类,则可以直接 内部类 名字 = new 内部类

StaticInner si = new StaticInner();

而访问外部类的相同名的静态属性时,使用:
StaticOuter.name
,方法内部类,就是内部类定义在外部类的方法里,不能使用访问控制符和static

引入另外一个包后,如果引入的包里有相同名的class并且有相同签名的构造方法时,调用构造方法将采用引入包的class的构造方法

类里面的静态内部类

public class Animal {
String name;
int count;

double say(String msg){
return 100;
}

public Animal(){

}

public class AnimalInnerCommon{
public void test(){
System.out.println("AnimalInnerCommon test");
}
}

// 静态内部类
public static class AnimalInner{
public void test(){
System.out.println("AnimalInner test");
}
}
}

//必须继承Animal才能使用其静态内部类
public class Dog extends Animal{
double say(String msg){
return 88.8;
}

public static void main(String[] args){
Animal ani = new Animal();

// 直接使用AnimalInner而不用Animal或者它的实例
AnimalInner ai = new AnimalInner();
ai.test();

// 通过Animal实例来使用其成员内部类
AnimalInnerCommon ai2 = ani.new AnimalInnerCommon();
ai2.test();
}
}

obj.getClass()

类对象
类的对象
:

类对象:通过
obj.getClass()
来获取,描述的是类的属性信息:姓名、身高、年龄、体重

类的对象:是一个类的初始化后的实例对象,描述的是类的属性值:熊猫、165cm、20岁、165kg

##修饰符

private 本类

默认 本类,同包

protected 本类,同包,子类

public 本类,同包,子类,其他

##抽象类和接口

抽象类:

在某些情况下,某个父类只是知道其子类应该包含怎样的方法,但不关心这些子类如何实现这些方法

从多个具有相同特征的类中抽象出一个抽象类,以这个抽象类为子类的模板,避免子类设计的随意性

接口:接口由全局常量和公共抽象方法组成。接口默认有abstract关键字来修改,如果没写的话,系统会自动加上。

接口中的常量都是
public static final
修饰符的,接口的方法都是
public abstract


抽象类和接口都定义和限制子类必须实现某些接口,但区别是:

抽象类可以有普通的变量和方法

类是单继承的,而接口可以是同时实现多个

接口用的是interface

如果同时继承抽象类和实现接口,那么继承类需在实现接口之前

使用接口可以用接口引用来指向实现接口的类:

Interface1 i1 = new InterfaceImplementedCls();

接口还经常与匿名内部类来配合使用:

Interface1 i1 = new InterfaceImplementedCls(){
public void implementMethod(){
System.out.println("使用匿名类型类来实现接口");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java jsp