一、将几个数字进行拼接,拼接成字符串

一定要将""放到几个数字之前,否则就会把数字相加之后的数转化成字符串

如你需要拼接年份,月份,和日

如果:2018+12+13+"" 将会转化成 2043的字符串

改正:"'+2018+12+13 将会转化成20181213

二、如何随机获得一个范围内的整数如[x,y)

根据左右区间开闭情况,分为以下几种

[x,y)  (Math.random()*(y-x)+x)

(x,y]  (Math.random()*(y-x)+1+x)

[x,y]  还没想到

三、将一个对象传入方法中,在方法中 对该对象的操作将影响该对象。对象传入相当于指针。

四、格式化时间为的格式字符串大小写是必须严格的,不然肯定会出错

yyyy:年
MM:月
dd:日
hh:12小时制
HH:24小时制
mm:分
ss:秒
S:毫秒 五、关于通过映射给两个对象中相同名称属性赋值的问题

public static void Copy(Object source, Object dest)throws Exception {
  BeanInfo sourceBean = Introspector.getBeanInfo(source.getClass(), java.lang.Object.class);
  PropertyDescriptor[] sourceProperty = sourceBean.getPropertyDescriptors();
  BeanInfo destBean = Introspector.getBeanInfo(dest.getClass(), java.lang.Object.class);
  PropertyDescriptor[] destProperty = destBean.getPropertyDescriptors();
  try{
    for(int i=0;i<sourceProperty.length;i++){
    for(int j=0;j<destProperty.length;j++){
      if(sourceProperty[i].getName().equals(destProperty[j].getName())){

      if (!sourceProperty[i].getName().equals("class")) {
      destProperty[j].getWriteMethod().invoke(dest, sourceProperty[i].getReadMethod().invoke(source));
        break;

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

通过测试发现,在两个类中有一个相同属性,class.但是class并没有get、set方法,导致方法报错,在程序中多加一个判断条件,即可完成本功能

六、新导入一个项目,类中不报错,项目有红叉号的解决方法:右击项目->buildpath->瞎几吧乱选,看有没有那种红叉的删掉试试

七、在项目中遇到的一个有意思的代码

代码一、

for(Menu m:fatherMenu){
            //将父亲节点信息放到menuTree中
            MenuTree mt=new MenuTree();
            mt.setMenuId(m.getMenuId());
            mt.setMenuName(m.getMenuName());
            mt.setChildList(map.get(m.getMenuId()));
            treeList.add(mt);
        }

代码二、

MenuTree mt=new MenuTree();

for(Menu m:fatherMenu){
            //将父亲节点信息放到menuTree中 
            mt.setMenuId(m.getMenuId());
            mt.setMenuName(m.getMenuName());
            mt.setChildList(map.get(m.getMenuId()));
            treeList.add(mt);
        }

这两段代码的区别就是把MenuTree mt=new MenuTree()放到循环里面和循环外面的区别,但是这两个的执行结果却是完全不同的

第一段代码执行完毕之后放入treeList中的三个东西是不同的,但是第二段代码执行完毕之后放入treeList中的三个东西却是完全一样的,这就导致了错误的发生。

错误的原因:MenuTree类型的对象是一个地址,而这个地址中的属性也会分配一定的内存空间,m.getMenuId(),m.getMenuName()得到的应该是这个三个属性存放的地址,当mt这个变量中的内容发生了变化时,那么地址中的内容也就变化了,导致以前添加的也就改变了。总的来说,set方法设置的不是一个值,而是一个对象。当这个对象改变的时候,引用这个对象的东东也会变化。地址共用了。可能String的值设置成final类型就是这种原因吧,只要当前地址设置为一个值,就不会改变,避免其他引用炸了。。。。

这段代码也是同样的道理。以后写代码的时候一定要这一这种问题。

八、磁盘中明明是有文件的,但是new File却报文件找不到的错误

查看是不是隐藏了后缀。

java积累的细节问题的更多相关文章

  1. Java总结——常见Java集合实现细节(1)

    Java提高——常见Java集合实现细节(1) 2018年04月18日 15:07:35 阅读数:25 集合关系图 Set和Map set代表一种集合元素无序.集合元素不可重复的集合 map代表一种由 ...

  2. java 代码的细节优化

    前言 代码优化,一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑 的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用 ...

  3. java基础部分细节

    访问控制修饰符 Java中,可以使用访问控制符来保护对类.变量.方法和构造方法的访问.Java支持4种不同的访问权限. 默认的,也称为 default,在同一包内可见,不使用任何修饰符. 私有的,以  ...

  4. Java集合详解8:Java的集合类细节精讲

    Java集合详解8:Java集合类细节精讲 今天我们来探索一下Java集合类中的一些技术细节.主要是对一些比较容易被遗漏和误解的知识点做一些讲解和补充.可能不全面,还请谅解. 本文参考:http:// ...

  5. Cordova插件中JavaScript代码与Java的交互细节介绍

    在Cordova官网中有这么一张架构图:大家看右下角蓝色的矩形框"Custom Plugin"--自定义插件.意思就是如果您用Cordova打包Mobile应用时,发现您的移动应用 ...

  6. 35个Java代码优化的细节,你知道几个?

    前言 代码 优化 ,一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没 ...

  7. Java 代码注意细节

    代码优化的目标是: 1.减小代码的体积 2.提高代码运行的效率 代码优化细节 1.尽量指定类.方法的final修饰符 带有final修饰符的类是不可派生的.在Java核心API中,有许多应用final ...

  8. Java 积累复习用

    1.jvm 默认编码:Java的默认编码 2.jvm heap : Java虚拟机的内存组成以及堆内存介绍 3.Java命令学习系列(一)--Jps 4.Java命令学习系列(二)--Jstack 5 ...

  9. java protected 的细节

    1. java的权限控制--大部分人都被错误洗脑了. 一个重大的坑,或者一个重大的误区,或者说一个洗脑了成千上万java编程者的错误概念就是: public private protected 是基于 ...

随机推荐

  1. hbuilder mui html vue ul li 自定义循环赋值ID

    <ul class="mui-table-view mui-table-view-chevron"> <li class="mui-table-view ...

  2. Myeclipse10 安装 破解 激活(含安装包,激活软件 免费)

    参考博客: https://www.cnblogs.com/gzhnan/articles/9536275.html 注意 安装完成之后一定不要点 Launch Myeclipse 下载地址: htt ...

  3. codeforces#1248D2. The World Is Just a Programming Task(括号匹配转化为折线处理)

    题目链接: http://codeforces.com/contest/1248/problem/D2 题意: 可以执行一次字符交换的操作 使得操作后的字符串,循环移位并且成功匹配的方案最多 输出最多 ...

  4. PHP 之查找字符串位置函数封装

    /** * 正数查找字符串n次出现的位置 * @param $str * @param $find * @param $n * @return bool|int */ function str_n_p ...

  5. Mysql之数据库设计规范

    1. 三大范式首先要明白”范式(NF)”是什么意思.按照教材中的定义,范式是“符合某一种级别的关系模式的集合,表示一个关系内部各属性之间的联系的合理化程度”.数据库范式也分为1NF,2NF,3NF,B ...

  6. Vue-cli 构建项目后 npm run build 如何在本地运行查看

    当你在本地直接打开index.html 你会发现了一丢丢404,这时候你有两个办法解决问题: 1:改变路径为相对路径. 在config 文件夹中index.js的 build对象里, 把 assets ...

  7. 数据结构Java版之排序算法(二)

    排序按时间复杂度和空间复杂度可分为 低级排序 和 高级排序 算法两种.下面将对排序算法进行讲解,以及样例的展示. 低级排序:冒泡排序.选择排序.插入排序. 冒泡排序: 核心思想,小的数往前移.假设最小 ...

  8. JAVA基础知识|synchronized和lock

    一.synchronized 是jvm的一个关键字,使用过程均由jvm控制 有三种使用方式: 修饰实例方法,作用于当前实例加锁,进入同步代码前要获得当前实例的锁 修饰代码块,同方法 修饰静态方法,作用 ...

  9. Vue进阶(Bus/作用域slot/动态组件)

    一.Vue非父子组件传值(Bus/总线/发布订阅模式/观察者模式) 我们在之前已经知道了父子传值.父组件传递过来了的值,在子组件通过props接受,然后就可以使用了. 也学过了隔代传值,均是通过pro ...

  10. mac使用xposed超详细入门级教程Android Studio-20190930

    工具 这里我使用的工具是Android Studio3.4.1,电脑环境mac os mojave 10.14.6(这个应该问题不大) 创建项目 1.打开Android Studio,看到这个界面,并 ...