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技术虽然提高了访问数据的效率,但是有可能导致主存 ...
随机推荐
- oldboyshell编程扩展内容
oldboyshell编程扩展内容一.命令的优先级 命令分为: ==> alias ==> Compound Commands ==> function ==> build_ ...
- im协议设计选型【转】
一.im协议的分层设计所谓“协议”是双方共同遵守的规则,例如:离婚协议,停战协议.协议有语法.语义.时序三要素.(1)语法:即数据与控制信息的结构或格式(2)语义:即需要发出何种控制信息,完成何种动作 ...
- GIT笔记:GITHUB教程【官方自译版】
GIT笔记:将项目发布到GITHUB GITHUB是什么 GitHub是版本控制和协作的代码托管平台.它可以让你和其他人在任何地方一起工作. 1.创建一个新的仓库 存储库通常用于组织单个项目.存储库可 ...
- 尽量不要在viewWillDisappear:方法中移除通知
1.iOS7新增加了导航控制器侧滑手势,当触发侧滑返回时,会调用系统的viewWillDisappear:方法,取消侧滑返回时又会调用viewWillAppear:方法. 2.在做手势和通知等一系 ...
- jquery 初篇
一.什么是jQuery对象? jQuery 对象就是通过jQuery包装DOM对象后产生的对象. jQuery 对象是 jQuery 独有的. 如果一个对象是 jQuery 对象, 那么它就可以使用 ...
- spring boot: EL和资源 (一般注入说明(二) @Service注解 @Component注解)
@Service用于标注业务层组件 : 将当前类注册为spring的Bean @Controller用于标注控制层组件(如struts中的action) @Repository用于标注数据访问组件,即 ...
- unity3D实现多点触碰
实现多点触碰是利用input这个类里面的方法实现的. 从edit-project settings-input就可以看到input能够得到的轴. 想要读取轴向可以使用Input.GetAxis方法获取 ...
- Delpih - Format
Format是一个很常用,却又似乎很烦的方法,本人试图对这个方法的帮助进行一些翻译,让它有一个完整的概貌,以供大家查询之用: 首先看它的声明:function Format(const Format: ...
- chrome浏览器的跨域设置-包括版本49前后两种设置 ,windows&mac
做前后分离的webapp开发的时候,出于一些原因往往需要将浏览器设置成支持跨域的模式,好在chrome浏览器就是支持可跨域的设置,网上也有很多chrome跨域设置教程.但是新版本的chrome浏览器提 ...
- Netty组件理解(转载)
转载的文章,写的非常好. 一.先纵览一下Netty,看看Netty都有哪些组件? 为了更好的理解和进一步深入Netty,我们先总体认识一下Netty用到的组件及它们在整个Netty架 ...