JAVA自用技巧记录(不定期更新)

时间:2021-04-05 00:11:41

1.Mysql查询某个字段(有时候想找某个字段在哪里,但是不知道表名等信息)

SELECT
TABLE_SCHEMA,
TABLE_NAME
FROM
information_schema.`COLUMNS`
WHERE
COLUMN_NAME = '要找的表名'

2.Git暂存

代码写了一半,然后来了需求要先改,可以用git stash 提交为暂存

完成任务后git stash pop 获取回来

 

3.long的乘法计算

public static void main(String[] args) {
final long MICROS_PER_DAY = 24 * 60 * 60 * 1000 * 1000; //应该要24L
final long MILLIS_PER_DAY = 24 * 60 * 60 * 1000;
System.out.println(MICROS_PER_DAY / MILLIS_PER_DAY);
}

  预期是1000,但是实际是5,因为在运算中的int丢失了信息,所以要记得转成long。

4.三目运算符

boolean条件   ?  表达式1  :   表达式 2

右结合性、表达式1和2中如果都为基本数据类型, 整个表达式的运算结果由容量高的决定。

1 假如表达式1和表达式2具有相同的类型,那么整个条件运算符结果的类型就是这个类型。 
2 假如一个表达式的类型是T,T是byte或short或char,另一个表达式的类型是int类型的常量表达式,而且这个常量表达式的值是可以用类型T表示的(也就是说,常量表达式的值是在类型T的取值范围之内),那么整个条件运算符结果的类型就是T。 
3 除以上情况外,假如表达式1和表达式2的类型不同,那么将进行类型提升,整个条件运算符结果的类型就是提升后的类型

int n = 7;
System.out.println(n
>6?1:2.0);//1.0 规则3
System.out.println(n>6?1:2);//1 规则1
System.out.println(n>6?'a':2L);//97L 规则3
System.out.println(n>6?'a':2);//a 规则2
System.out.println(n>6?'a':Character.MAX_VALUE);//a 规则2
System.out.println(n = (n>6?'a':Character.MAX_VALUE+1));//97 规则3

Object object
=(n>6?'a':2L);
System.out.println(object
instanceof Long); //true

 5.JSON 转换成对象

Map<String, String> beanMap = JSON.parseObject(ret,new TypeReference<Map<String, String>>() {});

6.获取当前日期

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
System.out.println(df.format(new Date()));// new Date()为获取当前系统时间

7.Spring 实例化、依赖注入后做一些后续初始化工作

@Override
public void afterPropertiesSet() throws Exception {
    //do something
}

8.Map的遍历(推薦2)

// 第一种
Set set = map.keySet();
Iterator it = set.iterator();
while (it.hasNext()) {
String str = it.next().toString();
}
// 第二种
Set<Entry<String, String>> entryset = map.entrySet();
Iterator iter = entryset.iterator();
while (iter.hasNext()) {
Entry<String, String> entry = (Entry<String, String>) iter.next();
}
// 第三种
for (Entry<String, String> entry : map.entrySet()) {

String strkey = entry.getKey();

String strval = entry.getValue();
}

9.Map如果要顺序的话用

LinkedHashMap,如果要求同步,建议用: Map<String String> map = Collections.synchronizedMap(new LinkedHashMap(<String String));

10.Spring注入静态变量的变通方法

//注入一个对象

@Value("${somethingVar}")
protected String _inputString;

protected static String inputString;
//通过init来变相注入静态变量

private void init() {
inputString = _inputString;
}