先是了解了下Math.random()方法,它是随机生成int、double类型的随机数。
Math.random()
double类
a pseudorandom double greater than or equal to 0.0 and less than 1.0.
即返回一个[0,1)的double类型的随机数
默认y>x
要获取一个[x,y)的double类型的随机数 左闭右开
double d = x + Math.random() * (y - x);
要获取一个(x,y]的double类型的随机数 左开右闭
double d=y-Math.random()*(y-x);
要获取一个[x,y]的double类型的随机数 左闭右闭
double d=x+Math.random()*y%(y-x-1);
要获取一个(x,y)的double类型的随机数 左开右开
double d=(y-Math.random())%y
int类
要获取一个[x,y)的int类型的随机数 左闭右开
int d = int( x + Math.random() * (y - x));
其他跟double类一样,虽然感觉有点鸡肋,不过还是先存着。
数据转化
byte→short→int→long→float→double
char→int
boolean不参与转换。
自动类型转换:小类型到大类型的转换.
强制类型转换:大类型到小类型的转换.
int a = 0x2f;//小写十六进制(等价于0x002f)0x开头表示16进制数
int b = 0x2F;//大写十六进制
int d = 010;//以零开头,表示八进制
关于递归函数的定义:编程语言中,函数Func(Type a,……)直接或间接调用函数本身,则该函数称为递归函数。递归函数不能定义为内联函数。必定存在可使递归调用终止的条件,否则导致出现无限递归。所以说如果中断了应该是有一个分支不调用自身。
java内存(粗略)
总结下是实例在栈中而对象在堆中,操作实例实际上是通过实例的指针来间接操作对象,多个实例可以指向同一指针。而且栈堆的数据销毁并不是同步的,方法一旦结束,栈中的局部变量立马就会销毁,而堆中可能不止一个实例指向对象,只有当栈中没有变量指向堆中的对象时才会销毁,还要等待垃圾回收。