美文网首页
Java填坑笔记:OGG-PRM项目知识点

Java填坑笔记:OGG-PRM项目知识点

作者: 倚岚听风 | 来源:发表于2017-08-12 14:28 被阅读94次
  1. 三元运算符:用来完成简单的选择逻辑,使用格式:
    (条件表达式)?表达式1:表达式2;
public static void ternary() {
  boolean boo = false;
  int c = boo ? test1(1) : test2(2);  //返回数据
}
  1. 遍历List集合,对集合中最后一个元素进行判断:
    foreach语句是for语句在特殊情况下的增强版本,简化编程,提高了代码的可读性和安全性(不用担心数组越界),相对于for语句是一个很好的补充,但foreach并不能替代for语句:
int lastIndex = colList.size()-1;
        for (int index = 0;index<=lastIndex;index++){
            String colName = colList.get(index);
            s.append(colName+" = "+colName);
            if(lastIndex == index){
                s.append("\n--插入标记\n),\n");
            }else {
                s.append(",\n");
            }
        }

还不能确定这样是最优雅的写法!

  1. PrepareStatement的用法及解释

1.PreparedStatement是预编译的,对于批量处理可以大大提高效率. 也叫JDBC存储过程
2.使用 Statement 对象。在对数据库只执行一次性存取的时侯,用 Statement 对象进行处理。PreparedStatement 对象的开销比Statement大,对于一次性操作并不会带来额外的好处。
3.statement每次执行sql语句,相关数据库都要执行sql语句的编译,preparedstatement是预编译得, preparedstatement支持批处理

  1. 判断String中是否包含指定字符(判断前三个字符):
String c = s.substring(0,3);
String schema = "";
  switch (c){
    case "ins":
    case "INS":
    schema = "ZOEINSUR";
    break;
  }

在java1.7之前大家都清楚switch的比较范围只能局限于(int 、short 、byte 、char)之间,Java 虚拟机和字节代码这个层次上,只支持在 switch 语句中使用与整数类型兼容的类型。在1.7后switch实现字符串比较的功能。具体是如何做到的?实际上,Java虚拟机和字节码层次上只支持switch语句中使用与整数类型兼容的类型没有变,只是这个实现字符串比较的新特性是在编译器这个层次上实现的。实现的机制是:将字符串之间的比较转换为其哈希值的比较。

  1. 遍历Map
public static void main(String[] args) {


 Map<String, String> map = new HashMap<String, String>();
 map.put("1", "value1");
 map.put("2", "value2");
 map.put("3", "value3");
 
 //第一种:普遍使用,二次取值
 System.out.println("通过Map.keySet遍历key和value:");
 for (String key : map.keySet()) {
  System.out.println("key= "+ key + " and value= " + map.get(key));
 }
 
 //第二种
 System.out.println("通过Map.entrySet使用iterator遍历key和value:");
 Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
 while (it.hasNext()) {
  Map.Entry<String, String> entry = it.next();
  System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
 }
 
 //第三种:推荐,尤其是容量大时
 System.out.println("通过Map.entrySet遍历key和value");
 for (Map.Entry<String, String> entry : map.entrySet()) {
  System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
 }

 //第四种
 System.out.println("通过Map.values()遍历所有的value,但不能遍历key");
 for (String v : map.values()) {
  System.out.println("value= " + v);
 }
}
  1. 将Array转换成List
String[] userid = {"aa","bb","cc"};
List<String> userList = new ArrayList<String>();
Collections.addAll(userList, userid);
  1. String分割字符串,通过判断"\n"换行符进行字符串切割,
String[] res = str.split("\n");  

需要注意的是:

1、如果这个文件是在Linux或者mac下建立编写的,那么用str.split("\n")会出现正确的结果,如下图:


2、如果这个文件是在window下编写的,那么就该注意了,如果你还是用str.split("\n")就会出现错误的结果,如下图:

有人可能说没什么区别啊,仔细看好了,第2个的结果,this和is testing中间有个空行,而第一个没有。为什么会出现这个结果。
这还要从回车符来讲,简单来说,window下回车是由\r\n(即0x0D和0x0A)组成的,注意不是\n\r,而linux下回车是由\n(即0x0A)小伙伴们别搞错了,这个我自己证实过,

这个window下编辑的文件,我用16进制打开的,大家看到第3,4列中的是0D、0A,也就是回车。
而在Linux下是这个样子的:
  1. Java IO流写入文件
public class WriteFileExample {
    public static void main(String[] args) {
 
        File file = new File("c:/newfile.txt");
        String content = "This is the text content";
 
        try (FileOutputStream fop = new FileOutputStream(file)) {
 
            // if file doesn't exists, then create it
            if (!file.exists()) {
                file.createNewFile();
            }
 
            // get the content in bytes
            byte[] contentInBytes = content.getBytes();
 
            fop.write(contentInBytes);
            fop.flush();
            fop.close();
 
            System.out.println("Done");
 
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

但这里的字符串如果包含中文,就会出现乱码,这是因为FileOutputStream是字节流,将文本按字节写入文件,而一个汉字是两个字节,无法一次写入,就会出现乱码,解决方法是使用OutputStreamWriter将字节流转换为字符流写入,同时指定utf-8编码,修改后代码如下:

public static void write2PRMFILE(String string){
        File file = new File("d:/test.prm");
        String content = "";
        content = string;

        try (OutputStreamWriter oStreamWriter = new OutputStreamWriter(new FileOutputStream(file), "utf-8");) {

            // if file doesn't exists, then create it
            if (!file.exists()) {
                file.createNewFile();
            }

            // get the content in bytes
            byte[] contentInBytes = content.getBytes();

            oStreamWriter.write(content);
            oStreamWriter.flush();
            oStreamWriter.close();

            System.out.println("Done");

        } catch (IOException e) {
            e.printStackTrace();
        }
    }

相关文章

  • Java填坑笔记:OGG-PRM项目知识点

    三元运算符:用来完成简单的选择逻辑,使用格式:(条件表达式)?表达式1:表达式2; 遍历List集合,对集合中最后...

  • Java 填坑笔记一

    String运算会产生新的String, 不会改变其原有的值StringBuilder和StringBuffer会...

  • React Native 每日一学(Learn a little

    本文出自《React Native学习笔记》系列文章。每天一个知识点(技巧,经验,填坑日记等),每天学一点,离大神...

  • 待填的坑

    最近太忙了,实在没有时间更新笔记。先挖几个坑,回头填 mPOS demo iPad演示版demo知识点UIpopo...

  • CentOS + Flask +Python +MySql 部

    叨唠几句 此笔记仅作为在学习部署阿里云后台项目的时候,踩的坑,和填的坑,也许很多不对和不妥的地方,还请指出.......

  • 《被讨厌的勇气》读书笔记

    这是一篇占坑待填的读书笔记

  • Android 7.0多语言适配,填坑日记

    背景 最近项目在适配7.0系统的时候发现一些问题,其中也有多语言适配的问题,就拿出来说说,记记笔记,填填坑。 问题...

  • Kotlin To Java 填坑

    背景: 使用Android studio将kotlin代码转换为java代码,发现没有Decompile按钮将By...

  • mybatis-generator:generate 生成代码配

    mybatis-generator:generate 生成代码配置踩坑不少,在此留下笔记以便后续填坑 一、mysq...

  • 踩坑填坑笔记

    今天碰到一个坑,如何挖了很多东西出来,记录一下。 问题一:在HSF demo 里面遇到了这种注解无法解析的情况 在...

网友评论

      本文标题:Java填坑笔记:OGG-PRM项目知识点

      本文链接:https://www.haomeiwen.com/subject/pushrxtx.html