java 入门
jdk + eclipse/idea
JDK是Java Development Kit 的缩写,Java的开发工具包
- bin文件夹:JDK工具程序,包括javac、java、javadoc、appletviewer
- include文件夹:存放用于本地方法的文件
- jre文件夹:存放Jaca运行环境文件
- lib文件夹:存放Java的类库文件,即工具程序使用的Java类库
工程的创建/运行 seed
工程环境配置 /运行
- 创建/svnDownload java 工程
- 设置工程,本地jdk版本,编码格式
- 配置启动项
- 创建/svnDownload web 工程
- 配置server
- 常见问题锦集
Java 设计理念
- Java 抽象类与接口
- Java 单继承 方法覆写/重写
- Java 枚举
- Java 内部类
- Java Collections,Arrays,Objects
- Java method 重载
- Java main 方法
Java 抽象类
- 抽象方法是一种特殊的方法:它只有声明,而没有具体的实现
- 如果一个类含有抽象方法,则称这个类为抽象类,抽象类必须在类前用abstract关键字修饰
- 抽象类缺省情况下默认为public
- 如果一个类继承于一个抽象类,则子类必须实现父类的抽象方法。如果子类没有实现父类的抽象方法,则必须将子类也定义为为abstract类
- 抽象类不能用来创建对象
public abstract class StreamUtils {
public static final int BUFFER_SIZE = 4096; // 缓冲区size
abstract void fun();
}
Java 接口
- 在软件工程中,接口泛指供别人调用的方法或者函数
- 不忘初衷接口是对行为的抽象
- 接口中的变量会被隐式地指定为public static final变量 用private修饰会报编译错误
- 方法会被隐式地指定为public abstract方法且只能是public abstract方法,用其他关键字,比如private、protected、static、 final等修饰会报编译错误
- 接口中的方法必须都是抽象方法
- 接口比抽象类更加“抽象”
public interface CsFkTzTmpEntityDao {}
public interface ArchivesCollectService {}
Java 部分关键字
- continue关键字 跳过本次循环,重新开始下一趟循环。
- break关键字 跳出当前的case语句/跳出当前循环结构
- this 关键字 this就是一个指向这个对象自己的一个引用
- extends 关键字
- static 关键字 修饰类,方法,变量
- final 关键字 修饰类,方法,变量,不可变,一个即是 static 又是final的常量会占据一段不能改变的内存空间。
- transient 瞬态关键字 修饰变量
- supper 关键字 调用父类属性/方法
- return 关键字 返回值 退出方法
- instanceof 关键字 判断一个对象是不是某个特定类的一个实例
public class ApplicationException extends RuntimeException {
private final transient ErrorInfo errorInfo; // transient 修饰的变量,生命周期仅存于调用者的内存中,不会写到磁盘里持久化
public ApplicationException(ErrorInfo errorInfo) {
super(String.format("error msg: {%s}", errorInfo.getMessage()));
}
}
private String cXmmc;
private Short nYear;
private Integer nNy;
private Long nJds;
private Date dCjrq;
private BigDecimal nZjf;
public static String saveFileFromInputStream(MultipartFile file,String fileName) throws IOException {
byte[] bs = new byte[1024*1024];// 1K的数据缓冲
}
public static final int BUFFER_SIZE = 4096;
public static String copyToString(InputStream in, Charset charset) throws IOException {
char[] buffer = new char[BUFFER_SIZE];
}
public static byte[] export(List<List<String>> list) {
int length = headerList.size();
}
private byte[] whitePdf(HgWtfgEntityWithBLOBs entity) throws DocumentException, IOException {
float[] wid1 ={0.25f,0.25f,0.25f,0.25f}; //列宽度的比例
}
java switch语句
- 在java5之前,它必须是一个能返回整数或者char类型的表达式
- 在java5当中,引入了对枚举Enum类型支持
- 在java7当中,switch以及可以匹配字符串了
java 数组/链表
length是数组的一个属性,在获取值的时候是按属性的方法获取
而size()是链表的一个方法,用于获取链表的长度
数据结构和使用偏好
数组在内存中得表现 连续的存储空间
数组随机读取效率很高(index)
在使用数组前要先申请占内存的大小,可能会浪费内存空间
插入数据和删除数据效率低
不利于扩展
链表 在内存中可以存在任何地方,不要求连续
每一个数据都保存了下一个数据的内存地址(next)
增加数据和删除数据很容易
查找数据时效率低
不指定大小,扩展方便
- java Vector ArrayList 都是以数组的形式存储在内存中 ,其中 Vector 被 Synchronized 修饰,所以线程是安全的, ArrayList 线程不安全
- java LinkedList 则以链表的形式进行存储,所以查询效率底,新增和删除效率高, 线程不安全
public class CommonServiceImpl implements CommonService {
private List<MkxxModel> getChilMkxx(Integer nSjmk ,List<MkxxEntity> mkxxEntities){
List<MkxxModel> MkxxList = new ArrayList<>();
}
private void removeAgentFully(SnmpMibAgent agent) {
Vector<TreeNode> v = new Vector<>();
}
public byte[] expUserDetailedByQuery(SubbranchQuery query, String select) {
List<String> sumList = new LinkedList<>();
}
}
java inerface / java implements
- 实现一个接口就是要实现该接口的所有的方法(抽象类除外)
- 接口中的方法都是抽象的。
- 多个无关的类可以实现同一个接口
- implements可以实现多个接口,用逗号分开
public inerface Runner {}
public interface Animal extends Runner{}
public class Fish implements Animal{}
Java 工具类
// Arrays 数组工具类
public static String merge(String str, String insertStr, boolean optFlag) {
String[] headList = {};
list.add(Arrays.asList(headList));
}
// Objects工具类
public boolean impExcel(MultipartFile file) {
List<Object> dataList = null;
// for iter
for (Object objects : dataList) {
HgFxdjmxbEntity hgFxdjmxbEntity = (HgFxdjmxbEntity) objects;
hgFxdjmxbDao.insertSelective(hgFxdjmxbEntity);
}
}
// Collections 集合工具类
public byte[] exportCollectRecordExcel(CollectRecordQuery query) {
if(!CollectionUtils.isEmpty(phoneRecordList)){
index = getBodyData(phoneRecordList, headList, UrgeModeEnum.PHONE.getCode(), index, phoneBodyList);
}
}
java extends
不是声明为final或者定义为abstract的类就能继承
JAVA中不支持多重继承,但是可以用接口来实现
//继承的优势
A a = new B(); // 前提 B extends A 不能访问子类的属性和方法 上传(upcast)是舍弃 安全的
A a = new A(); // 不仅能够访问自己的属性和方法,也能够访问父类的属性和方法 下传(downcast)是add,通常是不安全的
多态
// a1,a2两个虽然都是A类对象,但各自的f()不同。这正是多态性的体现
A a1 = new B(); // 前提 B extends A
A a2 = new C(); // 前提 C extends A
Java enum
package com.copote.common.enums;
/**
* 是否执行标志
*/
public enum ExecuteMarkEnum {
// 枚举变量
ALREADY_EXECUTE(1,"已执行"), NOT__EXECUTE(0,"未执行");
//成员变量
private int code;
private String name;
// 构造函数
private ExecuteMarkEnum(int code, String name){
this.code = code;
this.name = name;
}
// get set
public int getCode() {
return code;
}
public String getName() {
return name;
}
// 普通方法
public static String getNameByCode(int code){
ExecuteMarkEnum[] applicationEnums = ExecuteMarkEnum.values();
for(ExecuteMarkEnum applicationEnum : applicationEnums){
if(applicationEnum.getCode() == code){
return applicationEnum.getName();
}
}
return null;
}
}
https://blog.csdn.net/chen_006/article/details/88656268 jdk jre 区别
https://www.cnblogs.com/telwanggs/p/9459605.html java javaWeb 工程环境配置
https://blog.csdn.net/topdeveloperr/article/details/81414318 Java 重要
https://blog.csdn.net/qq_27093465/article/details/52180865 java enmu 7 种常见用法
https://blog.csdn.net/qq_42473704/article/details/81489012 java 工具类
https://www.cnblogs.com/dolphin0520/p/3811437.html java abstract 类 和 interface
https://blog.csdn.net/qq_39291929/article/details/81351026 数组和链表