-
map set 是接口,接口里面有抽象方法,hashmap hashset实现了接口的方法,所以hashset hashmap也叫set和map的实现类。
查看全部 -
foreach的用法 for(元素类型type 元素变量value :遍历对象obj)
查看全部 -
打印Set中的方法,只能用foreach和iterator方法。
不能用get()
查看全部 -
切记,List类中的集合下标从0开始
查看全部 -
Integer 先将int基本类型包装成对象(装箱)
然后拆箱为double基本类型拆箱为float类型等等。
查看全部 -
==: 判断两个字符串在内存中首地址是否相同,即判断是否是同一个字符串对象
查看全部 -
e.printStackTrace();
printStackTrace()方法的意思是:在命令行打印异常信息在程序中出错的位置及原因。
查看全部 -
throwable异常分为error和exception查看全部
-
collection:List(有序,可重复,序列,ArrayList,LinkList),Queue(有序,可重复,队列,LinkList),Set(无序,不可重复,集,HashSet),一个一个的对象
map:Entry内部类(键值对)映射关系<key,value>,HashMap哈希表
查看全部 -
主函数和HelloWorld
在目前的很多IDE下,Java可以有多个主函数,不过你要选择其中的一个进行执行。主函数的写法很简单,不过因为Java的所有函数必须以类方法的形式存在,因此你需要先随便创建一个单独的类:
public class MainTest{}
class前面的public代表一种公开状态的访问权限,具体使用方法不在这章讲,总之要写成这样。MainTest可以起成任何别的你喜欢的名字,不过一个Java文件里只能有一个public修饰的类,而且这个Java文件的文件名必须和public修饰的类名保持一致。
然后,在类中写一个特殊的方法:
public class MainTest{
public static void main(String[] s){
//主函数第一行,程序执行从这里开始
}
}
就像这样,类必须是publc的,方法必须是public static的(如你所见,它们并列修饰一个函数时,public关键字要在static前面),返回值为void,参数类型是一个String数组s,用来存储命令行参数,就和其他的语言差不多。
这样,一个主函数就写好了,书上给出了一个很简单的HelloWorld:
import java.util.*;
public class MainTest{
public static void main(String[] s){
System.out.println("Hello World!");
System.out.println(new Date());
}
}
让我们稍微分析一下这个HelloWorld,首先是import java.util.*;,导入java.util包中的所有类,我们下面用到了Date类,因此需要引入这个包。
主函数里,System是一个类,out是System类的静态对象,println是out对象的静态方法,因此即使不创建System类,也能用点运算符访问它的对象,再用点运算符访问其对象的方法。
println是一种很常见的方法,println可以向控制台输出它接收到的信息,比如一个字符串字面值"HelloWorld!"或者new Date(); 创建出的一个对象。
知识点8:P32,2.8,三种注释
C风格注释
你可以把注释内容写在/* */里,可跨多行,一旦标记了/*,它遇到下一个*/就会结束注释。
单行注释
你可以把注释内容写在//标记之后,知道本行结束,不可跨多行。
用于提取文档的注释(注释文档)
Java提供了Javadoc机制从源码的注释中提取和生成html文档,不过这个注释要符合特定格式,
用于提取文档的注释以/**开头,以*/结束。这样的注释也可跨多行,注释间每行开始如果有一个*或任意空白都可被忽略,为了更方便的提取文档,可以在这种注释里直接加入html代码,比如:
/**
*具体类信息可以到这里查找<br>
*<a href = "https://www.baidu.com"></a>
*/
把这段注释文档放在某个你想注释的类,字段 或者 方法前面一行,再用javadoc提取文档你就能看到你对这个类/字段或者方法的注释,后面我们会提到,只能对标记为public或protect的类/域/方法做注释。
也可以通过@符号加一些标记让javadoc快速自动帮你生成符合情境的html文档,比如:
/**
*@author TiriSane
*/
提取文档后,这个注释对应的类/域/方法介绍上会有作者这一项。除了author还有很多标记可以用:
@see 类名
@see 类名#类成员名
@see可以在你介绍一个类成员时,链接到其他类/类成员的文档。
{@link 类名#类成员名 你想要显示的标签名}
@link作用类似域@see,不过文档中超链接处会显示标签名而不是类名。
@version
用于说明版本信息。
@since
用于说明代码使用JDK的最早版本,比如@since JDK 1.8
@author
用于说明作者信息。
@param 参数名 描述
带@param的注释需放在一个类方法之前,用于说明这个方法的其中一个参数的意义。
@return 描述
带@return的注释需放在一个类方法之前,用于说明这个方法的返回值。
@throws 异常类 异常说明
目前还没讲到异常,简言之,就是用来 放在方法前 描述这个方法在何种情况下可能会产生这种异常。
@deprecated
用于指出注释文档所注释的类/域/方法是过时的,下个版本可能就删掉了,建议使用你代码的人不要使用这个标记的类/域/方法。
{@docRoot}
这个标签往往配合一些注释文档里的html代码使用,指出了文档的根目录,是一种相对路径标记。
{@inheritDoc}
这个标记所在的注释文档要放在类前面,生成javadoc时会把它的直接继承类的注释复制到这个类里。
查看全部 -
1. 通过修改tomcat中 conf/web.xml 文件的设置,代码如下所示:
<session-config>
<session-timeout>30</session-timeout>
</session-config>
2.通过编程的方式来修改,通过调用Session对象的setMaxInactiveInterval方法来修改,该方法的声明如下所示:
void setMaxInactiveInterval ( int seconds ){}
查看全部 -
List与Set区别
List:元素有放入的顺序;元素可以重复;list支持for循环,也就是通过下标来遍历,也可以用迭代器,
Set:元素没有放入的顺序,但是位置是固定的,元素的位置是通过HashCode决定的;元素不可以重复,当有重复元素时,会覆盖前一个;加入Set 的Object必须定义equals()方法 ,set只能用迭代,因为他无序,无法用下标来取得想要的值。
Set和List对比:
Set:检索元素效率低下,删除和插入效率高,插入和删除不会引起元素位置改变。
List:和数组类似,List可以动态增长,查找元素效率高,插入删除元素效率低,因为会引起其他元素位置改变。
查看全部 -
内部类
内部类大致分为:成员内部类,局部内部类,匿名内部类,静态内部类。
1、成员内部类:
成员内部类可以无条件访问外部类的所有成员属性和成员方法(包括private成员和静态成员)。
不过要注意的是,当成员内部类拥有和外部类同名的成员变量或者方法时,会发生隐藏现象,即默认情况下访问的是成员内部类的成员。如果要访问外部类的同名成员,需要以下面的形式进行访问:
1
2
外部类.this.成员变量
外部类.this.成员方法
虽然成员内部类可以无条件地访问外部类的成员,而外部类想访问成员内部类的成员却不是这么随心所欲了。在外部类中如果要访问成员内部类的成员,必须先创建一个成员内部类的对象,再通过指向这个对象的引用来访问:
内部类可以拥有private访问权限、protected访问权限、public访问权限及包访问权限。比如上面的例子,如果成员内部类Inner用private修饰,则只能在外部类的内部访问,如果用public修饰,则任何地方都能访问;如果用protected修饰,则只能在同一个包下或者继承外部类的情况下访问;如果是默认访问权限,则只能在同一个包下访问。这一点和外部类有一点不一样,外部类只能被public和包访问两种权限修饰。我个人是这么理解的,由于成员内部类看起来像是外部类的一个成员,所以可以像类的成员一样拥有多种权限修饰。
2.局部内部类
局部内部类是定义在一个方法或者一个作用域里面的类,它和成员内部类的区别在于局部内部类的访问仅限于方法内或者该作用域内。
局部内部类就像是方法里面的一个局部变量一样,是不能有public、protected、private以及static修饰符的。
3、匿名内部类
匿名内部类也是不能有访问修饰符和static修饰符的。
匿名内部类是唯一一种没有构造器的类。正因为其没有构造器,所以匿名内部类的使用范围非常有限,大部分匿名内部类用于接口回调。匿名内部类在编译的时候由系统自动起名为Outter$1.class。一般来说,匿名内部类用于继承其他类或是实现接口,并不需要增加额外的方法,只是对继承方法的实现或是重写。
4、静态内部类
静态内部类也是定义在另一个类里面的类,只不过在类的前面多了一个关键字static。静态内部类是不需要依赖于外部类的,这点和类的静态成员属性有点类似,并且它不能使用外部类的非static成员变量或者方法,这点很好理解,因为在没有外部类的对象的情况下,可以创建静态内部类的对象,如果允许访问外部类的非static成员就会产生矛盾,因为外部类的非static成员必须依附于具体的对象。
查看全部 -
接口
1.是一个标准,规范
2.是一种数据类型(引用类型)
3.由interface定义,只能包含常量和抽象方法
4.接口不能被实例化
5.接口需要被实现(implements),被实现后必须重写接口的所有抽象方法
6.一个类可以实现多个接口,如果又继承又实现,一定要先继承后实现
7.接口可以继承接口
查看全部 -
一)JVM把内存划分成两种:一种是栈内存,一种是堆内存。
①在函数中定义的一些基本类型的变量和对象的引用变量(变量名)都在函数的栈内存中分配。
②当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量所分配的内存空间,该内存空间可以立即被另作他用。
③堆内存用来存放由new创建的对象(包括由基本类型包装起来的类:Integer、String、Double,实际上每个基本类型都有他的包装类)和数组。
查看全部
举报