******************快捷键
格式化代码 ctrl+shift+f
查找类ctrl+shift+r
查找类ctrl+shift+h
大括{}另一个 ctrl+shift+p
get set alt+shift+s
******************JSON
//从字符串解析JSON对象
JSONObject obj = JSON.parseObject("{\"runoob\":\"菜鸟教程\"}");
//从字符串解析JSON数组
JSONArray arr = JSON.parseArray("[\"菜鸟教程\",\"RUNOOB\"]\n");
//将JSON对象转化为字符串
String objStr = JSON.toJSONString(obj);
//将JSON数组转化为字符串
String arrStr = JSON.toJSONString(arr);
//对象转成JSON对象
JSONObject json=JSONObject.fromObject(bean);
********net.sf.json.JSONObject
/**
* java对象转换成json对象,并获取json对象属性
*/
JSONObject jsonStu = JSONObject.fromObject(student);
System.out.println(jsonStu.toString());
System.out.println(jsonStu.getJSONArray("hobby"));
/**
* json对象转换成java对象,并获取java对象属性
*/
Student stu = (Student) JSONObject.toBean(jsonStu, Student.class); //(JSONObject ,Bean.class)
System.out.println(stu);
***************java单个文件编译
编译
cmd->javac test.java
编译问题:编码GBK的不可映射字符
Utf-8
使用javac -encoding UTF-8 test.java 编译通过
运行
cmd->javac test
**************Map不重复添加
HashMap<String,String> GroupList = new HashMap<String,String>();
for(String str: listVO){
//判断map中的key是否存在
if(!(GroupList.containsKey(key))){
//不存在添加
MaterialGroupList.put(key,value);
}
}
//遍历map
String key=elsAccountH+"-"+toElsAccount+"-"+inspectNumber;
pihItem.setPurchaseInspectItemVOs(tempList);
resultMap.put(key, pihItem);
Map<String, PurchaseInspectHeaderVO> resultMap = new HashMap<>();
for(String key:resultMap.keySet()){
PurchaseInspectHeaderVO headerVo = resultMap.get(key);
}
//将key(帐号)相同的数据添加到list
Map<String, List<EnquiryItemNewVO>> maps = new HashMap<>(16);
for (EnquiryItemNewVO itemVO : itemVOs) {
if (maps.containsKey(itemVO.getToElsAccount())) {
//如果key存在,取得key对应的list,设置key中的list
List<EnquiryItemNewVO> list = maps.get(itemVO.getToElsAccount());//取得key对应的list
list.add(itemVO);//设置key中的list
} else {
//如果key不存在,新建list对象,添加数据,设置到key
List<EnquiryItemNewVO> list = new ArrayList<EnquiryItemNewVO>();
list.add(itemVO);
maps.put(itemVO.getToElsAccount(), list);//list设置到list
}
}
结果:{key:670001,value:List<EnquiryItemNewVO>,key:670002,value:List<EnquiryItemNewVO>}
*************包含contains
if (url.contains("elsSsoCode=") && url.contains("elsAccount=")) {
}
*************instanceof
instanceof是Java中的二元运算符,左边是对象,右边是类;当对象是右边类或子类所创建对象时,返回true;否则,返回false。
**************LIst的item删除
List<PurchaseSuppliedItemVO> lstVO=PurchaseSuppliedItemMapper.list1(record);
Iterator<PurchaseSuppliedItemVO> it = lstVO.iterator();
while(it.hasNext()){
PurchaseSuppliedItemVO a = it.next();
if("100".equals(a.getDealType()) || "140".equals(a.getDealType())){
it.remove();
}
}
*************JSONArray对象是否这空
if(jsonArray.isEmpty()){操作}
****************时间
Date beginTime= new Date();
Date paramTime = new Date();
// 处理参数时间:
sbf.append("处理入参时间:" + (paramTime.getTime() - beginTime.getTime()) + "ms/n");
String dateStart = "2013-02-19 09:29:58";
String dateStop = "2013-02-20 11:31:48";
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d1 = format.parse(dateStart);
//mysql时间2019-08-07 13:04:57,表字段createDate datetime类型
private Date createDate;//定义
Date currDate = Calendar.getInstance().getTime();
head.setCreateDate(currDate);//设置值
*****************类型转换,float,double,字符型
String to Double
Double.valueOf(saleDeliveryPlanVO.getFbk6())
private Double price;//提货金额
float f = Float.parseFloat("25");
String s = Float.toString(25.0f);
****************?5个基本注解
@Override
伪代码,所以是可写可不写的。它表示方法重写,写上的好处如下:
1.可以当注释用,方便阅读.
2.告诉阅读你代码的人,这是方法的复写.
@SuppressWarnings
作用:告诉编译器忽略指定的警告,不用在编译完成后出现警告信息。
作用范围:可以标注在类、字段、方法、参数、构造方法,以及局部变量上。
使用方式:@SuppressWarnings(“”)@SuppressWarnings({})@SuppressWarnings(value={})
********************时间格式化
传入的时间格式
{
"endPullinDate": 1562630400000,
"startPullinDate": 1562544000000,
}
Bean中格式化传入的时间
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date startPullinDate;// 拉货时间
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date endPullinDate;
//日期
private Date lastUpdateDate;
head.setLastUpdateDate(new Date());
****************for循环
break是跳出当前循环
continue后面的代码不执行
******************list
匿名内部类实现list排序
public class sort {
public static void main(String[] args) {
List<User> list = new ArrayList<User>();
list.add(new User("张三", 5));
list.add(new User("李四", 30));
list.add(new User("王五", 19));
list.add(new User("陈十七", 17)); // 陈十七永远十七岁
Collections.sort(list, new Comparator<User>() {
@Override
public int compare(User u1, User u2) {
int diff = u1.getAge() - u2.getAge();
if (diff > 0) {
return 1;
}else if (diff < 0) {
return -1;
}
return 0; //相等为0
}
}); // 按年龄排序
System.out.println(list.toString());
}
}
************************BigDecimal 比较,加减乘除
BigDecimal a = new BigDecimal (101);
BigDecimal b = new BigDecimal (111);
//使用compareTo方法比较
//注意:a、b均不能为null,否则会报空指针
if(a.compareTo(b) == -1){
System.out.println("a小于b");
}
if(a.compareTo(b) == 0){
System.out.println("a等于b");
}
if(a.compareTo(b) == 1){
System.out.println("a大于b");
}
if(a.compareTo(b) > -1){
System.out.println("a大于等于b");
}
if(a.compareTo(b) < 1){
System.out.println("a小于等于b");
}
//尽量用字符串的形式初始,如“0.005”加上了双引号
BigDecimal num12 = new BigDecimal("0.005");
BigDecimal num22 = new BigDecimal("1000000");
//加法
BigDecimal result12 = num12.add(num22);
//减法
BigDecimal result22 = num12.subtract(num22);
//乘法
BigDecimal result3 = num1.multiply(num2);
BigDecimal result32 = num12.multiply(num22);
//绝对值
igDecimal result4 = num3.abs();
BigDecimal result42 = num32.abs();
//除法
BigDecimal result5 = num2.divide(num1,20,BigDecimal.ROUND_HALF_UP);
BigDecimal result52 = num22.divide(num12,20,BigDecimal.ROUND_HALF_UP);
System.out.println("加法用string结果:"+result12);
// BigDecimal转String,普通的数字字符串
System.out.println(new BigDecimal("100.000").toString());//结果:100.000
//bigDecimal 转换成 int类型
public static void bigDecimalToInt(){
BigDecimal b = new BigDecimal(12);
int c = b.intValue();
}
//int 转换成 bigDecimal类型
public static void intToBigDecimal(){
int b = 5;
BigDecimal a = new BigDecimal(b);
System.out.println(a +"的数据类型是"+a.getClass().getName());
}
//去掉小数位后的0
BigDecimal price1=new BigDecimal("0.00"); //0.00
BigDecimal price2=new BigDecimal("0.100"); //0.100
BigDecimal b1=price1.stripTrailingZeros(); //0
BigDecimal b2=price2.stripTrailingZeros(); //0.1
********************判断整型,判断小数
public static boolean isNumber1(String str) {// 判断整型
return str.matches("^\\d+$$");
}
public static boolean isNumber2(String str) {// 判断小数,与判断整型的区别在与d后面的小数点(红色)
return str.matches("\\d+\\.\\d+$");
}
public static boolean isNumber3(String str) {// 判断小数点开头
return str.matches("\\.\\d+$");
}
********************java常用的中间件
常用的中间件:tomcat,Weblogic,JBOSS,Coldfusion,Websphere,GlassFish
linux系统建议使用jetty或apache hpptd
大型的项目就用JBOSS或webloigc
小项目,或者是个人开发tomcat 大项目或者商业项目一般采用:weblgoic/webshere
其他的还有jboss、glasshfish等
*************去掉最后一个字符StringBuffer
StringBuffer str= new StringBuffer("name,");
str .append("age,")
str.deleteCharAt(str.length() - 1);
String result=str.toString();
******************枚举Enum
public enum EnquiryStatusEnum {
NEW("0","新建"),
QUOTE("1","报价中"),
QUOTED("2","已报价"),
AGAIN_QUOTE("3","重报价"),
ACCEPT("4","接受"),
REJECT("5","拒绝"),
CANCEL("6","作废"),
ALTERNATIVE("7","备选"),
CLOSE("8","关闭");
private final String value ;
private final String desc ;
EnquiryStatusEnum(String value,String desc)
{
this.value = value;
this.desc=desc;
}
public String getValue()
{
return value;
}
public String getDesc()
{
return desc;
}
}
使用:
EnquiryStatusEnum.AGAIN_QUOTE.getValue();//结果3
date
*******************SpringBoot ajax传一个参数到java,不是对象不要加上@ResponseBody注解,就可以在方法写上参数名
@RequestMapping(value="activity/ggUserQuery.do", method=RequestMethod.POST)
public void ggUserQuery(HttpServletRequest request,HttpServletResponse response,String ggUserid) {
.....}
文章地址:https://www.cnblogs.com/shirandedan/p/7727326.html
@RequestParam 和request.getParameter是同一回事。
前端请求传Json对象则后端使用@RequestParam;
前端请求传Json对象的字符串则后端使用@RequestBody。
************@RequestParam
前端代码
$.ajax({
type: 'GET',
url: '/weibo/list',
cache: 'false',
data: {
"startdt": formData['startdt'],
"enddt": formData['enddt'],
"provinceName": formData['provinceName']
},
dataType: 'json',
//contentType : 'application/x-www-form-urlencoded;charset=UTF-8',
headers : {
'Content-Type' : 'application/json;charset=utf-8'
},
success: function (result) {...}<br>后端代码
@RequestMapping("/list")
@ResponseBody
public List<Object> getWeiboAndCellList(@RequestParam("startdt") String date1, @RequestParam("enddt") String date2, @RequestParam("provinceName") String province) {...}
************@RequestBody
前端代码
var obj ={};
obj["user"] = JSON.stringify(this.update);
obj["classRoomId"] = this.classRoomid;
$.ajax({
type: 'POST',
url: url,
dataType: 'json',
cache: false,
headers : {
'Content-Type' : 'application/json;charset=utf-8'
},
data: JSON.stringify(obj),
success: function (result) {...}
});
后端代码
@RequestMapping("/updateUser")
@ResponseBody
public User updateUser(@RequestBody Map<String, Object> map){...}
************************java的对象属性用了大写
java的对象属性WESBS用了大写,后台要接收成功要改成小写wesbs传
****************返回状态对应的中文
String statusStr="0:审批通过;1:未审批;2:审批中;3:审批拒绝";
String statusName=dictionaryFormat(2+"",statusStr);
public String dictionaryFormat(String var,String statusDesc){
if(StringUtils.isBlank(var)){
return "";
}
String [] arr=statusDesc.split(";");
for(String item:arr){
String key=item.split(":")[0];
if(var.equals(key)){
return item.split(":")[1];
}
}
return var;
}
*******************com.alibaba.fastjson
对象to JSON
Person person = new Person("1","fastjson",1);
//这里将javabean转化成json字符串
String jsonString = JSON.toJSONString(person);
System.out.println(jsonString);
//这里将json字符串转化成javabean对象,
person =JSON.parseObject(jsonString,Person.class);
LIST To JSON
Person person1 = new Person("1","fastjson1",1);
Person person2 = new Person("2","fastjson2",2);
List<Person> persons = new ArrayList<Person>();
persons.add(person1);
persons.add(person2);
String jsonString = JSON.toJSONString(persons);
System.out.println("json字符串:"+jsonString);
//解析json字符串
List<Person> persons2 = JSON.parseArray(jsonString,Person.class);
//Map -> JSON
Map<String,Bar> map = new HashMap<String, Bar>();
map.put("a",new Bar());
map.put("b",new Bar());
map.put("c",new Bar());
String json = JSON.toJSONString(map,true);
System.out.println(json);
//JSON -> Map
Map<String,Bar> map1 = (Map<String,Bar>)JSON.parse(json);
for (String key : map1.keySet()) {
System.out.println(key+":"+map1.get(key));
}
JSONObject jsStr = JSONObject.parseObject(requestBody); //符串转JSON
<%@ page import="net.sf.json.JSONObject" %>
<%@ page import="net.sf.json.JSONArray" %>
JSONObject jsonObj = new JSONObject(jsonStr);
JSONObject myJson = JSONObject.fromObject(jsonMessage);
//符串转JSONArray
JSONArray json = JSONArray.fromObject(str )
if(json.size()>0){
for(int i=0;i<json.size();i++){
JSONObject job = json.getJSONObject(i); // 遍历 jsonarray 数组,把每一个对象转成 json 对象
System.out.println(job.get("name")+"=") ; // 得到 每个对象中的属性值
}
}
JSONObject jsonbject = JSONObject.fromObject(httpPost4Instream);
JSONArray jsonArray = jsonbject.getJSONArray("stores");
String string = jsonArray.getString(0);
JSONObject fromObject = JSONObject.fromObject(string);
String startDate = fromObject.getString("startDate");
String endDate = fromObject.getString("endDate");
param.setFromDate(Long.valueOf(startDate).longValue());
param.setToDate(Long.valueOf(endDate).longValue());
****************webservice接口调用
new->web services,web service Client,填入地址
**************系统路径
//路径D:\wordspace_jee\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\SeineWechat\uploadfile
String realPath = request.getSession().getServletContext().getRealPath("/uploadfile");
File path = new File(realPath);
if(!path.exists()){
path.mkdirs();
}
//路径http://127.0.0.1:8080/SeineWechat
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path;
*****************XML忽略<![CDATA[...忽略的内容]]
如果文本包含了很多的"<"字符 <=和"&"字符——就象程序代码一样,那么最好把他们都放到CDATA部件中。在CDATA内部的所有内容都会被解析器忽略
<![CDATA[......]]
"<![CDATA[<]]>a href='"+imgpth+"' target='_blank' <![CDATA[>]]>"+imgNameArr[i]+"<![CDATA[</a> ]]>"