精华内容
下载资源
问答
  • import java.util.*; import java.util.regex.Pattern; public class 某人编写的字符串工具类 { /** * 分割字符串到数组 * * @param str String 原始字符串 * @param splitsign String 分隔符 ...
    package 字符串类;
    import java.util.*;
    import java.util.regex.Pattern;
    
    public class 某人编写的字符串工具类 {
    
    		  /**
    		   * 分割字符串到数组
    		   * 
    		   * @param str String 原始字符串
    		   * @param splitsign String 分隔符
    		   * @return String[] 分割后的字符串数组
    		   */
    		  @SuppressWarnings("unchecked")
    		  public static String[] split(String str, String splitsign) {
    		    int index;
    		    if (str == null || splitsign == null)
    		      return null;
    		    ArrayList al = new ArrayList();
    		    while ((index = str.indexOf(splitsign)) != -1) {
    		      al.add(str.substring(0, index));
    		      str = str.substring(index + splitsign.length());
    		    }
    		    al.add(str);
    		    return (String[]) al.toArray(new String[0]);
    		  }
    
    		  /**
    		   * 替换字符串
    		   * 
    		   * @param from String 原始字符串
    		   * @param to String 目标字符串
    		   * @param source String 母字符串
    		   * @return String 替换后的字符串
    		   */
    		  public static String replace(String from, String to, String source) {
    		    if (source == null || from == null || to == null)
    		      return null;
    		    StringBuffer bf = new StringBuffer("");
    		    int index = -1;
    		    while ((index = source.indexOf(from)) != -1) {
    		      bf.append(source.substring(0, index) + to);
    		      source = source.substring(index + from.length());
    		      index = source.indexOf(from);
    		    }
    		    bf.append(source);
    		    return bf.toString();
    		  }
    
    		  /**
    		   * 替换字符串,能能够在HTML页面上直接显示(替换双引号和小于号)
    		   * 
    		   * @param str String 原始字符串
    		   * @return String 替换后的字符串
    		   */
    		  public static String htmlencode(String str) {
    		    if (str == null) {
    		      return null;
    		    }
    
    		    return replace("\"", """, replace("<", "<", str));
    		  }
    
    		  /**
    		   * 替换字符串,将被编码的转换成原始码(替换成双引号和小于号)
    		   * 
    		   * @param str String
    		   * @return String
    		   */
    		  public static String htmldecode(String str) {
    		    if (str == null) {
    		      return null;
    		    }
    
    		    return replace(""", "\"", replace("<", "<", str));
    		  }
    
    		  private static final String _BR = "<br/>";
    
    		  /**
    		   * 在页面上直接显示文本内容,替换小于号,空格,回车,TAB
    		   * 
    		   * @param str String 原始字符串
    		   * @return String 替换后的字符串
    		   */
    		  public static String htmlshow(String str) {
    		    if (str == null) {
    		      return null;
    		    }
    
    		    str = replace("<", "<", str);
    		    str = replace(" ", " ", str);
    		    str = replace("\r\n", _BR, str);
    		    str = replace("\n", _BR, str);
    		    str = replace("\t", "    ", str);
    		    return str;
    		  }
    
    		  /**
    		   * 返回指定字节长度的字符串
    		   * 
    		   * @param str String 字符串
    		   * @param length int 指定长度
    		   * @return String 返回的字符串
    		   */
    		  public static String toLength(String str, int length) {
    		    if (str == null) {
    		      return null;
    		    }
    		    if (length <= 0) {
    		      return "";
    		    }
    		    try {
    		      if (str.getBytes("GBK").length <= length) {
    		        return str;
    		      }
    		    } catch (Exception ex) {
    		    }
    		    StringBuffer buff = new StringBuffer();
    
    		    int index = 0;
    		    char c;
    		    length -= 3;
    		    while (length > 0) {
    		      c = str.charAt(index);
    		      if (c < 128) {
    		        length--;
    		      } else {
    		        length--;
    		        length--;
    		      }
    		      buff.append(c);
    		      index++;
    		    }
    		    buff.append("...");
    		    return buff.toString();
    		  }
    
    		  /**
    		   * 判断是否为整数
    		   * 
    		   * @param str 传入的字符串
    		   * @return 是整数返回true,否则返回false
    		   */
    		  public static boolean isInteger(String str) {
    		    Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$");
    		    return pattern.matcher(str).matches();
    		  }
    
    		  /**
    		   * 判断是否为浮点数,包括double和float
    		   * 
    		   * @param str 传入的字符串
    		   * @return 是浮点数返回true,否则返回false
    		   */
    		  public static boolean isDouble(String str) {
    		    Pattern pattern = Pattern.compile("^[-\\+]?[.\\d]*$");
    		    return pattern.matcher(str).matches();
    		  }
    
    		  /**
    		   * 判断输入的字符串是否符合Email样式.
    		   * 
    		   * @param str 传入的字符串
    		   * @return 是Email样式返回true,否则返回false
    		   */
    		  public static boolean isEmail(String str) {
    		    Pattern pattern = Pattern.compile("^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$");
    		    return pattern.matcher(str).matches();
    		  }
    
    		  /**
    		   * 判断输入的字符串是否为纯汉字
    		   * 
    		   * @param str 传入的字符窜
    		   * @return 如果是纯汉字返回true,否则返回false
    		   */
    		  public static boolean isChinese(String str) {
    		    Pattern pattern = Pattern.compile("[\u0391-\uFFE5]+$");
    		    return pattern.matcher(str).matches();
    		  }
    
    		  /**
    		   * 是否为空白,包括null和""
    		   * 
    		   * @param str
    		   * @return
    		   */
    		  public static boolean isBlank(String str) {
    		    return str == null || str.trim().length() == 0;
    		  }
    
    		  /**
    		   * 判断是否为质数
    		   * 
    		   * @param x
    		   * @return
    		   */
    		  public static boolean isPrime(int x) {
    		    if (x <= 7) {
    		      if (x == 2 || x == 3 || x == 5 || x == 7)
    		        return true;
    		    }
    		    int c = 7;
    		    if (x % 2 == 0)
    		      return false;
    		    if (x % 3 == 0)
    		      return false;
    		    if (x % 5 == 0)
    		      return false;
    		    int end = (int) Math.sqrt(x);
    		    while (c <= end) {
    		      if (x % c == 0) {
    		        return false;
    		      }
    		      c += 4;
    		      if (x % c == 0) {
    		        return false;
    		      }
    		      c += 2;
    		      if (x % c == 0) {
    		        return false;
    		      }
    		      c += 4;
    		      if (x % c == 0) {
    		        return false;
    		      }
    		      c += 2;
    		      if (x % c == 0) {
    		        return false;
    		      }
    		      c += 4;
    		      if (x % c == 0) {
    		        return false;
    		      }
    		      c += 6;
    		      if (x % c == 0) {
    		        return false;
    		      }
    		      c += 2;
    		      if (x % c == 0) {
    		        return false;
    		      }
    		      c += 6;
    		    }
    		    return true;
    		  }
    
    		  public static void main(String[] args) {
    		    String[] numbers = { "12345", "-12345", "123.45", "-123.45", ".12345", "-.12345", "a12345", "12345a", "123.a45" };
    		    for (String str : numbers) {
    		      System.out.println(str + "=" + isInteger(str) + " " + isDouble(str));
    		    }
    
    		    String[] emails = { "1@2.com", "1.2@3.com", "1@3.4.5.com" };
    		    for (String str : emails) {
    		      System.out.println(str + "=" + isEmail(str));
    		    }
    		    String[] chineses = { "中国", "1中国", "中国1", "1中国2", "中1国" };
    		    for (String str : chineses) {
    		      System.out.println(str + "=" + isChinese(str));
    		    }
    		  }
    }


    展开全文
  • Java中的双重检查锁模式,单纯的懒汉模式,容易出现线程安全问题,加锁的懒汉又发现每次synchronized 很费资源,于是用双检锁在synchronized前加上if()判断对象是否为空,但是又有部分编译器可能为了性能会在实例...

    Java中的双重检查锁模式,单纯的懒汉模式,容易出现线程安全问题,加锁的懒汉又发现每次synchronized 很费资源,于是用双检锁在synchronized前加上if()判断对象是否为空,但是又有部分编译器可能为了性能会在实例化对象的时候重排序,所以需要加volatile修饰。

    详细可以看这篇博客https://www.cnblogs.com/xz816111/p/8470048.html

    展开全文
  • 北邮java作业

    2017-03-02 16:16:51
    4. 判断是否为空 5.根据位置返回学生 6.根据学号返回学生 7. 输出全部学生信息 8.退出程序 请输入您的操作:1 请输入学生信息: 学号:2011211301 姓名:王晓 数学成绩:88 英语成绩:79 科学成绩:90 ---目前有1个...
  • 需要两遍检查,DCL= double check lock,开始的时候判断是否为空,加锁,进去后再判断实例是否为空,然后再进行执行,检查两遍。 Volatile :保持线程可见性,禁止指令重排序(谁先请求的,就先返回...

    问题1:解释一下对象的创建过程(半初始化)。

    申请一块内存,给它赋值默认值(8大类型都有自己的默认值,此时为半初始化状态),然后调用构造方法,赋初始值,然后建立关联

    线程上锁

    需要两遍检查,DCL= double check lock,开始的时候判断是否为空,加锁,进去后再判断实例是否为空,然后再进行执行,检查两遍。

    Volatile :保持线程可见性,禁止指令重排序(谁先请求的,就先返回谁,然后再进行下一个指令。),

    问题2:DCL单例到底需不需要volatile?(指令重排)

    如果没有禁止指令重排,第一个线程来了会进行版初始化状态,让t不为空,第二个线程来了判断t不为空,直接使用半初始化状态的值,出现不同的异常状态。因此要加上volatile,禁止指令重排序(对内存区域加了volatile,对这个内存限制)。[订单更新的时候会有更新]

    问题3:对象在内存中的存储布局(对象与数组的存储不同)

    普通对象和数组不同。

    普通对象有四项:占用16个字节

    markword(标记用,放锁状态年龄 hashcode等)、 8个字节

    类型指针classpointer(指向属于哪个类型 a.class)、4个字节

    实例数据instance data(存放实例数据int a = new int[0],存放a)、

    对齐padding(前面三个内容的位数不是8的倍数(读一块内容的时候,整块读最快),则补上) 4个字节,

    JOL能将能将对象打印出来,打印布局。

    数组对象有5项:

    markword(标记用,放锁状态年龄 hashcode等)、 8个字节

    类型指针classpointer(指向属于哪个类型 a.class)、4个字节

    数组长度

    实例数据instance data(存放实例数据int a = new int[0],存放a)、

    对齐padding(前面三个内容的位数不是8的倍数(读一块内容的时候,整块读最快),则补上) 4个字节,

    问题4:对象头具体包括什么(markword classpointersynchronized锁信息)

    最主要的内容:锁的信息。有一个锁升级的过程。

    New--- 偏向锁——自旋锁(无锁 lock-free 轻量级锁)— 重量级锁

    偏向锁:贴标签

    自旋锁:取消偏向锁,多个线程进行CAS竞争(先读出来,然后修改,再回去对比一下,如果值还是原来的,则贴上标签,加锁成功。),   ABA问题,加个版本。自旋次数超过ncpu内存的一半,在jvm中进行抢占,则升级为重量级锁。

    重量级锁:将线程放到队列里面,按照顺序执行

    问题5:对象怎么定位(直接、间接)

    在JVM中怎么指向对象。

    1.句柄两次引用,效率低,唯一好处:垃圾回收的比较方便。

    T在堆中通过实例数据指针倒找对象,通过类型数据指针在方法区找到t.class。

    2.直接指针,平时常用

    T指向堆中的类型数据指针,在方法区中找到t.class.

    问题6:对象怎么分配(栈上-线程本地-Eden-Old)

    Start — new (优先在栈上分配,栈上分配的好处:方法没了之后,栈及没有了,不需要对栈内存进行gc回收。需要满足1.逃逸分析,2.标量替换。)—- 栈上空间够用,直接end,如果不够用,如果很大,看看老年代,可能会fullgec;如果不大,线程本次分配TLAB,年轻代分配里面分配内存,

    栈上比堆上快一倍。(java 优化,参照c语言的struct,struck在栈上分配)

    1.栈上分配:不会有逸出,没有别的线程访问(没有别的方法使用)。直接使用成员两边替换这个对象。满足以上两个条件则可以进行栈上分配。

    e.g. User对象,有两个成员变量 id 和name,小内容的东西直接放在栈上,别的方法不会调用这个user对象;直接使用id和name代替user对象,直接放到栈上。

    Gc回收一次,年龄加一,到达一定年龄则进行回收。age是4位,最大表示15.

    问题7:object o = new object() 在内存中占用多少字节

    普通对象指针 o 占用4个字节,正常占用8个字节,但是开启了压缩,所以是4个。

    Object对象占用:16字节,如果有压缩的话,padding是4,如果没有压缩的话,padding是0,指针占用8个字节了。默认压缩。

    4字节寻址的最大空间:指向的最大数字2**4*8-1,32g

    堆内存超过一定值,访问不到所有对象,压缩自动不起作用了,就算你自己扩展内存为48个g,结果发现对象跟32g一样,内存自动膨胀了。

     

    展开全文
  • java课程实验

    热门讨论 2012-12-02 16:51:19
    2、使用一维数组编码实现一个栈(Stack)类,要求提供以下操作:(1)boolean isEmpty():判断栈当前是否为空;(2)入栈操作void push(obj):把数据元素obj插入堆栈;(3)出栈操作Object pop():出栈,并返回删除...
  • Java-开发技巧

    2017-12-25 14:14:00
    ArryList 移除数组指定元素 arr.remove(i) i--  for(int i=0;i<arr.size();i++){  if(arr.get(i).doubleValue()==3){  arr.remove(i);...判断字符串是否为空时  if(xxxx!=null&&!""....
    ArryList 移除数组指定元素 arr.remove(i)  i--
      for(int i=0;i<arr.size();i++){
      if(arr.get(i).doubleValue()==3){
        arr.remove(i);
        i--;
      }
     }
    
    判断字符串是否为空时
      if(xxxx!=null&&!"".equals(xxxx)){}
    
    
    
    
      
    

      

    转载于:https://www.cnblogs.com/kkdf/p/8109146.html

    展开全文
  • Java中equals和==的区别

    2015-11-07 21:26:49
    一般情况下 == 用于 基本数据类型(byte...所以,首先应该判断是否是对象,再判断对象的值是否为空串 "".equals() 判断 值 是否相等 == null 判断 对象 是否是同一个对象 String str1 = null;//引用为空,不是一个...
  • beiyou Java作业 -1

    2017-11-13 16:46:14
    4. 判断是否为空 5.根据位置返回学生 6.根据学号返回学生 7. 输出全部学生信息 8.退出程序 请输入您的操作:1 请输入学生信息: 学号:2011211301 姓名:王晓 数学成绩:88 英语成绩:79 科学成绩:90 ---目前有1个...
  • 该工具类主要操作数组。 以下数组的类型使用T代替,同一函数中T代表相同类型。T可包含的类型有:Object、boolean、int、byte、char、double、float、long、short。...2.判断是否为空,返回boolean: Arra...
  • 1,强制转换时数据精度受损 Long appendTime = null == sccShipConfig.getAppendTime() ? 0L : (long) (sccShipConfig.getAppendTime().doubleValue() * 60 * 60 * 1000);...2,不判断实体类是否为空,就点属性 lo
  • java 语言中,Java 程序的基本单位是类,也就是说:一个 Java 程序是由多个类组成 的。定义一个类与定义一个数据类型是有区别的。在程序设计语言中,把定义数据类型的能 力作为一种很重要的能力来对待。在面向...
  • public boolean isEmpty() //判断数组是否为空 { if(stu==null) { kong=true; } else{ kong=false; } return kong; } public boolean addStu(Student x) //添加学生信息 { if(isOverflow...
  • JAVA面试题最全集

    2010-03-13 13:09:10
    如何将数值型字符转换数字(Integer,Double) 如何将数字转换字符 如何取小数点前两位,并四舍五入。 4.日期和时间 如何取得年月日,小时分秒 如何取得从1970年到现在的毫秒数 如何获取某个日期是当月的...
  • Java经典编程300例(code)

    千次下载 热门讨论 2013-01-09 10:26:53
    实例019 判断某一年是否为闰年 26 实例020 验证登录信息的合法性 27 实例021 为新员工分配部门 28 实例022 用switch语句根据消费 金额计算折扣 29 实例023 判断用户输入月份的季节 31 实例024 使用while循环语句与...
  • 八大基本数据类型:byte、short、int、long、、char、boolean、float、double,八种基本数据类型都有相对相应的包装类,类中包含各操作方法,在不进行初始化时,值为空。 引用数据类型:类,接口类型,数组类型等。 ...
  • 达内 coreJava 习题答案

    2010-02-10 19:49:01
    1,编写程序,判断给定的某个年份是否是闰年。 闰年的判断规则如下: (1)若某个年份能被4整除但不能被100整除,则是闰年。 (2)若某个年份能被400整除,则也是闰年。 import java.util.Scanner; class ...
  • 编译器用Java编写程序

    2008-12-18 15:50:58
    =-1)//判断字符串中是否已经包含了小数点 { } else//如果没数点有小 { if(tf1.getText().trim().equals("0"))//如果初时显示0 { str.setLength(0); tf1.setText((str.append("0"+e2.getActionCommand()))...
  • java小游戏贪吃蛇

    2011-01-12 18:00:24
    否则,检测是否遇到食物(加头部)或身体(结束);如果什么都没有,加上头部, * 去掉尾部。由于用了LinkedList数据结构,省去了相当多的麻烦。 ****************************************************************...
  • Java-PHP-C#

    2012-11-27 15:13:36
    好了,现在我们要用我们所学的来干一些有用的事:构建一个匹配模式去检查输入的信息是否为一个表示money的数字。我们认为一个表示money的数量有四种方式: "10000.00" 和 "10,000.00",或者没有小数部分, "10000" and...
  • if (field.getText().equals("")) { //判断文本框是否为空 flag = true; //判断输入第一个或第二个数 m = null; //第一个数 n = null; //第二个数 } else if (m != null) { n = field.getText(); ...
  • ch.isEmpty()) {//判断是否为空 ch=ch.substring(0,ch.length()-1);//后退一格 } } else ch=""; } else { if(e.getSource()==button[15]) {//等号 Double dd=Calculation(ch.trim...
  • //判断词典结构是否为空 public boolean isEmpty() { return 0==size; } //若词典中存在以key为关键码的条目,则返回其中的一个条目;否则,返回null public Entry find(Object key) { return A[h(key)].find...
  • 实例028 判断某一年是否为闰年 38 实例029 验证登录信息的合法性 39 实例030 为新员工分配部门 40 实例031 用Switch语句根据消费金额计算折扣 41 实例032 判断用户输入月份的季节 42 2.4 循环控制 43 实例033 使用...
  • 实例028 判断某一年是否为闰年 38 实例029 验证登录信息的合法性 39 实例030 为新员工分配部门 40 实例031 用Switch语句根据消费金额计算折扣 41 实例032 判断用户输入月份的季节 42 2.4 循环控制 43 实例033 使用...
  • 实例028 判断某一年是否为闰年 38 实例029 验证登录信息的合法性 39 实例030 为新员工分配部门 40 实例031 用Switch语句根据消费金额计算折扣 41 实例032 判断用户输入月份的季节 42 2.4 循环控制 43 实例033 使用...
  • 实例028 判断某一年是否为闰年 38 实例029 验证登录信息的合法性 39 实例030 为新员工分配部门 40 实例031 用Switch语句根据消费金额计算折扣 41 实例032 判断用户输入月份的季节 42 2.4 循环控制 43 实例033 使用...
  • 实例028 判断某一年是否为闰年 实例029 验证登录信息的合法性 实例030 为新员工分配部门 实例031 用Switch语句根据消费金额计算折扣 实例032 判断用户输入月份的季节 2.4 循环控制 实例033 使用while与自增...
  • 实例028 判断某一年是否为闰年 实例029 验证登录信息的合法性 实例030 为新员工分配部门 实例031 用Switch语句根据消费金额计算折扣 实例032 判断用户输入月份的季节 2.4 循环控制 实例033 使用while与自增...
  • 实例028 判断某一年是否为闰年 实例029 验证登录信息的合法性 实例030 为新员工分配部门 实例031 用Switch语句根据消费金额计算折扣 实例032 判断用户输入月份的季节 2.4 循环控制 实例033 使用while与自增...
  • 实例028 判断某一年是否为闰年 实例029 验证登录信息的合法性 实例030 为新员工分配部门 实例031 用Switch语句根据消费金额计算折扣 实例032 判断用户输入月份的季节 2.4 循环控制 实例033 使用while与自增...

空空如也

空空如也

1 2 3
收藏数 50
精华内容 20
关键字:

java判断double是否为空

java 订阅