Java探索之旅(4)——方法和Random&Math类
1.基本知识点
❶方法在C++里面称为函数。调用方法时,应该类型兼容——即不需显式类型转换即可将形参传递给实参。
❷形参的改变不影响实参的值。
❸Java注重模块化设计和自顶向下的设计
2.Math类
Math隐式导入,故不需要import。常用函数如下:
❶正三角和反三角函数:sin(),cos(),tan(),asin(),acos(),atan()。类型均为double,输入弧度
❷角度弧度转换函数:toRadians(),toDegrees()。参数和返回类型均为double
❸指数函数和对数函数:exp(),log(),log10(),pow(),sqrt()
❹取整函数:上整ceil(),下整floor,取最近整数(距离相等返回奇数)rint()
round(float x)=(int)floor(x+0.5),round(double x)=(long) floor(x+0.54)
❺两者之间最大min(),最小max(),输入2数类型可相异;绝对值abs()
3.生成随机数Random
❶0.0<=Math.random()<1.0。
Math.random()*100; //返回位于[0 100)的随机数,但是不等于100
'a'+Math.random()*('z'-'a'+1); //随机返回‘a’-'z'之间的字母
随机返回[a,b]之间的数或者字符(a+Math.random()*(b-a+1))。如果没有+1,则返回值的区间为[a,b)。使用方法如下面代码。
❷Random类
利用java.util.Random类定义的随机数产生对象。如果种子相同,产生的随机数也相同,默认以当前时间为种子。使用方法如下:
java.util.Random data=new java.util.Random(3);//使用种子3产生随机数,默认以当前时间为种子
int a=data.nextInt();
int b=data.nextInt(1000);//(0,1000)之间的随机整数
double c=data.nextDouble();//(0,1.0)之间的随机数
float d=data.nextFloat();//(0.0F,1.0F)之间随机数
boolean e=data.nextBoolean();//随机false or true
4.代码
❶调用函数计算任意10进制数的16进制形式
❷调用扩展类生成100个'a'-'z'之间的随机字符
package function_study;
import java.util.Scanner;
public class function_study {
public static void main(String[] args)
{
Scanner input=new Scanner(System.in);
System.out.print("输入一个大于0的数---");
int decimal=input.nextInt();
String hex="";
while(decimal!=0)//int值不能作为boolen类型,此处不能直接使用decimal
{
hex=decimal2hex(decimal%16)+hex;
decimal/=16;
}
hex="0X "+hex;
System.out.println("10进制转换为16进制的结果是---"+hex);
input.close();
for(int i=0;i<100;i++)<span style="font-family: Arial, Helvetica, sans-serif;">//随机生成a-z之间的100个字符</span> if((i+1)%10==0)
System.out.println(RandomCharacter.getRandomLower());
else
System.out.print(RandomCharacter.getRandomLower());
}
public static char decimal2hex(int decimal)
{
if(decimal>=0&&decimal<=9)
return (char)('0'+decimal);
else
return (char)(decimal-10+'A');
}
} package function_study;
public class RandomCharacter {
public static char getRandomCharacter(char ch1,char ch2)
{return (char)(ch1+Math.random()*(ch2-ch1+1));}
public static char getRandomLower()
{return getRandomCharacter('a','z');}
public static char getRandomHigh()
{return getRandomCharacter('A','Z');}
public static char getRandomDigit()
{return getRandomCharacter('0','9');}
public static char getRandomCharacter()
{return getRandomCharacter('\u0000','\uFFFF');}
}
Java探索之旅(4)——方法和Random&Math类的更多相关文章
- java数组、java.lang.String、java.util.Arrays、java.lang.Object的toString()方法和equals()方法详解
public class Test { public static void main(String[] args) { int[] a = {1, 2, 4, 6}; int[] b = a; in ...
- JAVA反射中的getFields()方法和getDeclaredFields ()方法的区别
JAVA反射中的getFields()方法和getDeclaredFields ()方法的区别 关于获取类的字段有两种方式:getFields()和getDeclaredFields().我们先来 ...
- JAVA进阶之旅(二)——认识Class类,反射的概念,Constructor,Field,Method,反射Main方法,数组的反射和实践
JAVA进阶之旅(二)--认识Class类,反射的概念,Constructor,Field,Method,反射Main方法,数组的反射和实践 我们继续聊JAVA,这次比较有意思,那就是反射了 一.认识 ...
- java——多线程——单例模式的static方法和非static方法是否是线程安全的?
单例模式的static方法和非static方法是否是线程安全的? 答案是:单例模式的static方法和非static方法是否是线程安全的,与单例模式无关.也就说,如果static方法或者非static ...
- Java探索之旅(8)——继承与多态
1父类和子类: ❶父类又称基类和超类(super class)子类又称次类和扩展类.同一个package的子类可以直接(不通过对象)访问父类中的(public,缺省,protected)数据和方法. ...
- 深入理解Java中的同步静态方法和synchronized(class)代码块的类锁
一.回顾学习内容 在前面几篇博客中我我们已经理解了synchronized对象锁.对象锁的重入.synchronized方法块.synchronized非本对象的代码块, 链接:https://www ...
- Java探索之旅(14)——文本I/O与读写
1文件类File ❶封装文件或路径的属性.不包括创建和读写文件操作.File实例并不会实际创建文件.不论文件存在与否,可以创建任意文件名的实例.两种实例创建方式如下: ...
- java基础之二:取整函数(Math类)
在日常开发中经常会遇到数字的情况,有关数据的场景中会遇到取整的情况,java中提供了取整函数.看下java.lang.Math类中取整函数的用法. 一.概述 java.lang.Math类中有三个和取 ...
- Java探索之旅(18)——多线程(2)
1 线程协调 目的对各线程进行控制,保证各自执行的任务有条不紊且有序并行计算.尤其是在共享资源或者数据情况下. 1.1 易变volatile cache技术虽然提高了访问数据的效率,但是有可能导致主存 ...
随机推荐
- shell编程1
shell编程1 一.shell基础正则表达式 1.正则表达式和通配符 正则表达式是用来在文件中匹配符合条件的字符串,正则式包含匹配.(grep awk sed) 通配符是用来匹配符合条件的文件名,通 ...
- Data Structure Linked List: Reverse a Linked List in groups of given size
http://www.geeksforgeeks.org/reverse-a-list-in-groups-of-given-size/ #include <iostream> #incl ...
- vmware虚拟机安装MAC OSX10.10Yosemite简要记录
vmware所在环境为win7 64位系统,intel4核CPU,16G内存. 本人安装的是OSX10.10Yosemite的CDR镜像. 1. 在服务中停止所有vmware服务. 2. 安装unlo ...
- C#判断VS是否处于设计模式
public class CheckDesingModel { public static bool IsDesingMode() { bool ReturnFlag = false; if (Lic ...
- 【leetcode刷题笔记】Jump Game
Given an array of non-negative integers, you are initially positioned at the first index of the arra ...
- 大话设计模式--外观模式 Facade -- C++实现实例
1. 外观模式: 为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这个子系统更加容易使用. 外观模式的使用场合: A: 设计初期阶段,应该要有意识的将不同的两个层分离. ...
- Windows- 改变cmd控制台默认显示编码
在中国的电脑会要求兼容gbk编码,所以微软进入中国市场也顺应中国的要求,其中最明显的就是在cmd上默认的显示就是GBK .当开发人员在运行一些有打印中文的程序时,由于编码采用国际兼容版本的utf_8等 ...
- Spark- Checkpoint原理剖析
Checkpoint,是Spark 提供的一个比较高级的功能.有的时候,比如说,我们的 Spark 应用程序,特别的复杂,然后从初始的RDD开始,到最后拯个应用程序完成,有非常多的步骤,比如超过20个 ...
- 分享知识-快乐自己:Caused by: org.hibernate.tool.schema.extract.spi.SchemaExtractionException: More than one table found in namespace (, ) : Dept (XXX)
在命名空间(,)中找到多个表 - SchemaExtractionException? 问题: 尝试在Java应用程序中使用Hibernate将一些值保存到表中时,我一直面临着这个奇怪的异常. 但是, ...
- 分享知识-快乐自己:Maven 无法加载 Oracle 数据库驱动源
由于Oracle授权问题,Maven3不提供Oracle JDBC driver,为了在Maven项目中应用Oracle JDBC driver,必须手动添加到本地仓库. 手动添加到本地仓库需要本地有 ...