一、乘法数据的溢出

背景:在算阶乘时,当数字太大后,结果为0,此时引出了数据在算乘法时数据的溢出  10!或者100!

byte   8位    8! = -27=-128 (转换到byte允许数据范围内)       9!等于8!    10!=0

short  16位   16!= -215 (转换到short允许数据范围内)      17!等于16!  18!=0

int    32位   32!=-231 (转换到int允许数据范围内)       33!等于32!  34!=0

long  64位     64!=-263 (转换到long允许数据范围内)      65!等于64!  65!=0

说明在等于数据类型它自己的位数时,等于负的最小值,

在下一阶乘时也等于最小负值(n个数据一圈个数,比如byte就是n个28

在下一阶乘时等于0,即n个半圈,比如byte类型就是n个128(27

结论:算阶乘时即数据类型那位和下一位等于最小值,加2位为0

测试代码如下:

byte a = 1;
for(byte n = 1; n < 100;n++){
  a = (byte)(a * n);
  System.out.println(n+"!"+"="+a);
}

int b = 1;
  for(int n = 1; n < 100;n++){
  b = (int)(b * n);
System.out.println(n+"!"+"="+b);
}

测试结果如下:

同理,short和long型一样;double因为有小数,所以结果是无穷大,结果如下

根据结果可改成如下的数学表达式,还没有推理证实

int sum = 1*2*3*4*.......*32 = -231+n*232  (n为正整数,且这是0到32以内第一个可以表达的,即乘到32时n为可以的最小正整数,)

byte sum = 1*2*3*...*8   = -128+n*28

 二、测试random随机数几率是否相等

背景,在调用系统随机数产生的时候,不清楚源代码,想测试一下随机数的概率

测试代码如下:

public class Random_Test {
  public static void main(String[] args) {
    int random = 0;
    int times = 10000000;//生成随机数的次数
    int random_Range = 100;//生成随机数的范围

    int[] arry = new int[random_Range];
    for (int i = 0; i < times; i++) {
      random = (int) (Math.random() * random_Range);
      arry[random] += 1; 生成的随机数是多少,对应的就+1
    }

    for (int i = 0; i < random_Range; i++) {
      System.out.println("arry[" + i + "]" + arry[i] + "\t\t" + arry[i] * 100.0 / times + "%");
     }
    System.out.println("产生的数字 次数\t\t百分比");
    System.out.println("理论次数"+times/random_Range+"\t\t"+"理论百分比"+1.0/random_Range*100+"%");
  }
}

测试结果如下:

三、判断数字是否为纯数字:

思路:取出每一位,判断是否为0-9,不是则跳出,返回false

下面是网上搜一些代码:

ava中判断字符串是否为数字的方法:

1.用JAVA自带的函数
public static boolean isNumeric(String str){
  for (int i = 0; i < str.length(); i++){
    System.out.println(str.charAt(i));//转换为字符
    if (!Character.isDigit(str.charAt(i))){//判断是否为数字,同理包含的方法有是否为字母(大小写字母),是否为字母或数字,是否为空白字符
      return false;
    }
  }
  return true;
}

2.用正则表达式
首先要import java.util.regex.Pattern 和 java.util.regex.Matcher
public boolean isNumeric(String str){
  Pattern pattern = Pattern.compile("[0-9]*");
  Matcher isNum = pattern.matcher(str);
  if( !isNum.matches() ){
    return false;
  }
  return true;
}

第1种方式只能校验不含负号“-”的数字,即输入一个负数-199,输出结果将是false;
而第二方式则可以通过修改正则表达式实现校验负数,将正则表达式修改为“^-?[0-9]+”即可,修改为“-?[0-9]+.?[0-9]+”即可匹配所有数字。

方法一:利用正则表达式

public static void main(String[] args){
  String str="123456";
  boolean result=str.matches("[0-9]+");
  if (result == true) {
    System.out.println("该字符串是纯数字");
  }else{
    System.out.println("该字符串不是纯数字");
  }
}

方法二:利用Pattern.

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Testone {
  public static void main(String[] args){
    String str="123456";
    Pattern pattern = Pattern.compile("[0-9]{1,}");
    Matcher matcher = pattern.matcher((CharSequence)str);
    boolean result=matcher.matches();
    if (result == true) {
      System.out.println("该字符串是纯数字");
    }else{
    System.out.println("该字符串不是纯数字");
    }
  }
}

方法一:用JAVA自带的函数
public static boolean isNumeric(String str){
  for (int i = str.length();--i>=0;){
    if (!Character.isDigit(str.charAt(i))){
      return false;
    }
  }
  return true;
}

方法二:
/*
* 判断是否为整数
* @param str 传入的字符串
* @return 是整数返回true,否则返回false
*/

public static boolean isInteger(String str) {
  Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$");
  return pattern.matcher(str).matches();
}

方法三:
public static boolean isNumeric(String str){
  Pattern pattern = Pattern.compile("[0-9]*");
  return pattern.matcher(str).matches();
}

方法四:
public final static boolean isNumeric(String s) {
  if (s != null && !"".equals(s.trim())) {
    return s.matches("^[0-9]*$");
  }else{  
    return false;

  }

}

3方法五:用ascii码
public static boolean isNumeric(String str){
  for(int i=str.length();--i>=0;){
    int chr=str.charAt(i);   // char转换为int后为它的ASCII值
    if(chr<48 || chr>57)
      return false;
    }
    return true;
}

转载于:https://www.cnblogs.com/chenyuanqiu2008/p/5155183.html

1.24 Java周末总结 ①乘法数据的溢出 ②测试random随机数几率是否相等 ③判断字符串是否为纯数字...相关推荐

  1. Java判断字符串是否为纯数字(0-9)

    public static boolean isNumeric(String str){/ * Copyright: http://javapub.iteye.com/blog/666544 * /f ...

  2. java判断数字大小写_java判断字符串是否全部由数字,大小写字母,特殊符号组成...

    直接上代码,经过验证. package javaTest; import java.util.regex.Matcher; import java.util.regex.Pattern; public ...

  3. java判断字符串是否全部由数字,大小写字母,特殊符号组成

    直接上代码,经过验证. package javaTest;   import java.util.regex.Matcher; import java.util.regex.Pattern;   pu ...

  4. java字符转为数字_java判断字符串是否可以转为数字

    java运算中,常涉及将String 型的字符串转为int 型数字的情况. 哪些字符串可以转为数字,哪些不可以呢,不能总以Integer.parseInt() 是否抛出异常来判断. 刚好碰到了转换情况 ...

  5. java如何判断字符串里全部为数字_java语言中如何判断字符串是否为数字

    [实例描述] 软件运行过程中,经常需要用户输入数值.货币值等信息,然后进行处理.由于用户输入 只能是字符串类型,如果输入了非法的信息,如在货币值中输入了字母"a"以及其他非数字 字 ...

  6. java字符转为数字_Java 判断字符串能否转化为数字的三种方法

    linux shell 常用指令 1. man 对你熟悉或不熟悉的命令提供帮助解释 eg:man ls 就可以查看ls相关的用法 注:按q键或者ctrl+c退出,在linux下可以使用ctrl+c终止 ...

  7. java 判断一个字符串是否为纯数字

    if (getUid().matches("[0-9]+")) {Log.v("纯数字");} else { Log.v("非纯数字");} ...

  8. java判断字符串是字母或者数字组合

    可以用正则表达式来检验 比如这样就可以满足您全部的需求:\color{#FF0000}{比如这样就可以满足您全部的需求:}比如这样就可以满足您全部的需求: String reg="^[a-z ...

  9. Java判断字符串是否为非负整数 / 数字

    /*** 判断字符串是否为非负整数* @param str* @return*/public boolean isNonnegativeInteger(String str){return str = ...

最新文章

  1. deedeedee crazy 寒假逆向生涯(11/100)
  2. 日志库EasyLogging++学习系列(10)—— 日志文件滚动
  3. JavaScript——max-age
  4. php特殊字符转化函数,PHP函数将Unicode转换成特殊字符?
  5. 计算机程序编辑器中文版,小说编辑器(Atomic Scribbler)
  6. Log图文详解(Log.v,Log.d,Log.i,Log.w,Log.e)!
  7. hi模板文件报乱码问题
  8. Java编程:分治算法
  9. 2021最新QQ闪照获取保存软件
  10. PackageManager.hasSystemFeature Android SystemServer裁剪
  11. 家庭无线网络桥接扩展方案
  12. 一种可大规模定向钓鱼携程旅游网千万用户的***过程重放(转载自wooyun)
  13. PowerPoint 在播放时自动运行宏
  14. cint、int、fix的区别
  15. BZOJ5109 CodePlus 2017大吉大利,晚上吃鸡!(最短路+拓扑排序+bitset)
  16. 二倍图三倍图什么意思_什么是二倍图三倍图
  17. 鲁大师Q3季度手机报告:性能最强、最流畅手机揭晓!
  18. 2020焊工(技师)考试及焊工(技师)模拟考试系统
  19. Vulkan Samples 阅读 -- Extensions(二)
  20. iReport_web开发配置向导

热门文章

  1. CSS基础之清除浮动
  2. 开源监控解决方案Nagios+Cacti+PNP4Nagios+NConf+NDOUtils+Nagvis(九)NagVis安装
  3. javaEE异常摘要——更换工作区相同tomcat当部署在同一个项目疑难解答
  4. 2014 Red Hat Summit(红帽峰会)PPT合集
  5. 周末爬山之圈门-潭柘寺
  6. 面试题13. 机器人的运动范围
  7. PAT1036.跟奥巴马一起编程
  8. c 本地html解析,使用selenium解析本地HTML文件方法
  9. Shell中字符串反转的六大方法
  10. linux挂载iso镜像文件_Linux服务器如何识别移动硬盘?