Miscellaneous
关于javadoc
使用/** ... */
可以生成文档。 需要注释的地方:
包(需要在包的目录中添加一个单独的文件package-info.java(仅由注释构成)或者package.html(由
<body></body>
构成)公有类和接口
公有和受保护的域和方法
最后,运行命令: javadoc -d docDirectory nameOfPackage
多文件编译
直接编译包含main的文件即可,java会自动查找用到的类的.class文件 方法可以访问该类所有成员的私有field
关于final
类中的final修饰的field:必须在构造函数中初始化并且之后不能再修改的变量 注意:对于可变类的field,被final修饰只表示其不会再指向其他对象,其内容仍然可以更改
关于private,public和不标记
在完全不标记的情况下,field是包可见的,包中的所有方法都可以访问; public意味着任何类都可以使用; private意味着只有定义它的类可以使用;
关于main函数
每个类都可以有一个main方法(注意用public static void修饰),这可以用于单元测试。运行 java ClassName 就可以单独运行这个类ClassName中的main函数的内容。
关于传参
java 是 call by value
方法参数会覆盖实例同名field。
关于构造器
在构造函数第一行调用this(...)将会调用相应的另一个构造函数。 这样的构造函数必须写在首行 可以用初始化块{}来对部分field初始化,它会在构造函数调用前执行。
关于package和import
和python机制类似,import之后就不需要写出包名 java编译器可以查看文件的内部,所以和c的include有着微妙的不同 利用代码最开头的语句 package packagepath.packagename; 可以把本文件中定义的类放到名为packagename的包里。否则,它被放在default package包中。要注意定义的包名和文件目录之间的一致性,并且从根目录编译运行目标文件: javac packagepath/packagename/classname.java java packagepath.packagename.classname
关于Wrapper包装器
不可变final,包装基础类型 定义arraylist不能使用基础类型,因此应当使用wrapper如 `ArrayList<Integer> list = new ArrayList<>();' 这种情形下调用add的时候,会把基本类型参数自动装箱为wrapper;查询操作时则会自动拆箱 wrapper类还包含了很多有用的静态方法
关于可变参数方法
printf(String format, Object... args) 可以传一个Object[]给最后一个参数
关于Class类
任一类型T.class会返回其对应的Class类对象,Class类描述这个类型
关于异常处理
System.gc() 建议JVM进行垃圾收集 除零错误是运行时错误,编译可通过,运行时抛出ArithmeticException类 catch异常:寻找能处理异常的代码 Throwable: Error + Exception try{}包裹代码块,伴随catch语句,finally的代码必然会执行 如果一个方法不知道怎么处理这个异常,就应该声明抛出异常throws exception{},交给调用这个方法的函数来解决
流
数据从硬盘存储空间流向jAVA中的内存地址
字节流和字符流的概念
IOstream字节流 IOstreamReader/Writer java.io包的字符流,用于字节转字符;和别的流对接需要管道 unsupportedEncodingException 不支持的编码格式 BufferedReader 带缓冲,此时可以操作
串行化
把内存中的状态存储于硬盘或者发送给其他电脑 需要实现Serializable接口
课间随笔
面向对象:封装,继承,多态 主动对象:Java中含有main方法的对象。它是一组属性和一组服务的封装体,其中的主动服务可以主动执行 final class 不可被继承 abstract class 抽象类 extends superclassName 继承[superclassnName]父类(Java不能继承多个父类) 所有类默认继承OBJECT native 调用其他语言的代码 this(0,0)调其他构造函数的构造函数要放在第一行? super()放在子类构造函数的第一句,构造父类
静态方法可以用来实现工厂模式 main函数是静态的 允许在声明成员变量的时候就对其赋值
事件适配器模式 抽象方法(abstract)不能有方法体! 含抽象方法的类必然为抽象类,抽象类不能被实例化
OOP:接口
Arrays.sort()可以对implements Comparable的类的数组排序。 基本类型比较的方法:Integer.compare, Double.compare(返回值为1,0,-1,可以避免舍入带来的错误)
OOP:泛型
实践:多线程
实践:网络编程
IP地址:32位,4个字节 主机名hostname+端口号port number 服务类型service:http,ftp,……
传输协议
TCP: 面向连接,可靠 相应类:URL,URLConenction,Socket,ServerSocket UDP:不可靠的数据包式数据传输 相应类:DatagramPacket,DatagramSocket,MulitcastSocket
实践:WEB编程
安装tomcat HttpServlet类,开发:重写doGet(),doPost(),doPut(),doDelete() 需要修改web.xml
HTTP session, Cookie ServletConfig 保存servlet的配置信息
forms: <% any java code %>; jsp:scriptlet?</jsp:scriptlet expression: <%= expr %> declaration:<! declare %>
MVC design pattern
Model+View+Controller
Last updated
Was this helpful?