枚举,Math和Random
1.
实用类: 01.枚举 enum
Student stu=new Student();
我们为了保证用户一个健康的输入! 我们使用了封装特性!
用户就不能直接访问我们的属性了!! private char sex;
提供了一个对外访问的接口! getSex() setSex(char sex)
在setSex()中书写我们的逻辑!如果用户输入的不健康,有默认值! 001.枚举是一种数据类型,名称就是enum!
public class Hello{}
public interface Hello{}
public enum Hello{} 002.可以限定用户的输入
虽然之前学的封装,能保证我们数据的准确性!但是阻挡不了用户的输入!
003.所有的 枚举值 都是static final 修饰的(静态常量)
004.构造方法必须是私有的! 防止外部访问! 02.基本数据类型对应的包装类(封装类)
包装类:
001.基本数据类型能点出来方法吗? 不能!! 对应的包装类可以!
002.集合中可以存放基本数据类型吗? 不能!! 对应的包装类可以!
003.就是把基本数据类型转换成对象!
004.所有的包装类都是由fianl修饰的,不能创建子类
005.在基本数据类型需要用对象来表示的时候使用
006.jdk1.5之后,允许了基本数据类型和包装类的混合算术运算 byte Byte
short Short
int Integer
long Long
float Float
double Double
上面的六种,都是数值类型! 都继承了Number类!
然后Number实现了Serializable接口! boolean Boolean
char Character
他们两个都实现 了Serializable接口! 如果有个方法让我们传递一个Serializable类型的参数!
我们可不可以传递8种基本数据类型的封装类呢? 可以! 装箱和拆箱操作 (基本数据类型和对应的包装类做转换)
装箱:把基本数据类型转换成对应的包装类
拆箱:把包装类转换成对应的基本数据类型 基本数据类型中叫: 自动类型转换和 强制类型转换
引用数据类型中叫: 向上转型和向下转型! 03.Math
001.java.lang包下的一个算术类!
002.是final修饰的
003.除了构造方法之外的所有方法都是静态的!可以通过类名直接访问 天花板函数
ceil 天 向上取整
floor 地 向下取整 04.Random
随机数
2.枚举
/**
* 学生的实体类
*/
public class Student { private String name;
private Gender sex; // 枚举类型的性别 public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public Gender getSex() {
return sex;
} public void setSex(Gender sex) {
this.sex = sex;
} public Student(String name, Gender sex) {
super();
this.name = name;
this.sex = sex;
} public Student() {
super();
} @Override
public String toString() {
return "Student [name=" + name + ", sex=" + sex + "]";
} }
student
/**
* 针对于性别的枚举类
*/
public enum Gender { // 需要创建枚举值
MAN("男"), WOMAN("女"); private String genderSex; private Gender(String name) {
this.genderSex = name; } public String getGenderSex() {
return genderSex;
} public void setGenderSex(String genderSex) {
this.genderSex = genderSex;
} }
Gender枚举
public class EnumTest { public static void main(String[] args) {
// 创建学生对象
Student stu = new Student();
// 通过set()给stu对象赋值
stu.setName("小黑黑");
stu.setSex(Gender.WOMAN); // 只能是MAN和WOMAN
System.out.println(stu.getName() + "的性别是:"
+ stu.getSex().getGenderSex()); } }
Test
3.包装类
import org.junit.Test; public class PackageTest { // 所有的封装类 都有将对应的基本数据类型作为参数的方法 来构造实例
@Test
public void test01() {
/**
* Float有三个实例化构造方法 分别是 传递 double float String
* 其他的数值类型都是两种构造!
* Character只有一个构造!
*/
Byte a = new Byte((byte) 1);
Short s = new Short((short) 1);
Integer b = new Integer(5);
Long l = new Long(1);
Float f = new Float(2);
Double c = new Double(5);
// 上面的六个封装类都继承了Number
Boolean boolean1 = new Boolean(true);
Character character1 = new Character((char) 1);
Character character2 = new Character('1'); } /**
* 六个封装类继承了Number
* 用String来构造实例的时候,String中存放的必须是数值类型的字符串
* 除了Character来构造实例的时候,没有String类型的参数!
* 其它7种封装类 都可以传递一个Stirng类型的变量,来构造实例!
* 注意点:
* Stirng类型的变量必须能转换成数值类型,否则会抛出异常(NumberFormatException)!
*/
@Test
public void test02() {
Byte a = new Byte("1");
Short s = new Short("1");
Integer b = new Integer("1");
Long l = new Long("1");
Float f = new Float("1");
Double c = new Double("1");
// 除了大小写的true 其它都返回false
Boolean boolean1 = new Boolean("");
System.out.println(boolean1);
// 编译报错 Character character1 = new Character("1");
} /**
*除了Character,都有对应的parse的方法
*/
@Test
public void test03() {
Integer i = new Integer("5");
System.out.println(i + 1);
System.out.println(Integer.parseInt("54321") + 1);
// 转换进制 把2进制的1011转换成10进制的数字
System.out.println("10对应的2进制:" + Integer.parseInt("1011", 2)); /** String num = "27";
System.out.println(Integer.parseInt(num) + 1);
Double.parseDouble("20");
Byte.parseByte("1");
Short.parseShort("1");
System.out.println(1 + 1 + "2"+1); // 221
System.out.println("1" + (1 + 2)); // 13
*/
} @Test
public void test04() {
System.out.println(Integer.toBinaryString(28)); // 转换成2进制
System.out.println(Integer.toHexString(28)); // 转换成16进制
System.out.println(Integer.toOctalString(28)); // 转换成8进制
} /**
* valueOf
* 把基本数据类型转换成对应的封装类
* 除了Character没有传递String类型的参数
*
* xxxValue
* 把xxx类型转换成xxx对应的基本数据类型
*/
@Test
public void test05() {
// 基本数据类型和对应封装类之间的转换 我们称之为 装箱和拆箱操作
int a = 5;
Integer integer = Integer.valueOf(a); // 装箱 把基本数据类型a转换成了包装类integer
integer.intValue(); // 拆箱 把包装类integer转换成基本数据类型 Double d = Double.valueOf(20.0);
double h = d.doubleValue(); Character character = Character.valueOf('a');
character.charValue();
} @Test
public void test06() {
int a = 127;
int b = 127;
System.out.println(a == b);
} @Test
public void test07() {
Integer a = new Integer(1);
Integer b = new Integer(1);
System.out.println(a == b);
} @Test
public void test08() {
/**
* Integer a = 127;
Integer b = 127;
System.out.println(a == b); //true
*/ Integer a = 128;
Integer b = 128;
/**
* 01.128是int类型 是基本数据类型
* 02.a是integer类型 是包装类
* 03.想把基本数据类型转换成包装类
* 04.就需要使用valueOf(128)
* 05.观看底层代码得知
*
public static Integer valueOf(int i) {
assert IntegerCache.high >= 127;
if (i >= IntegerCache.low && i <= IntegerCache.high)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i); 当我们传入的值 大于127或者小于-128就会创建新对象
}
*/
System.out.println(a == b);
} }
包装类
4.Math Random
public class MathTest { public static void main(String[] args) { System.out.println("向上取整:" + Math.ceil(20.001));
System.out.println("向下取整:" + Math.floor(20.999));
System.out.println("四舍五入:" + Math.round(20.5));
System.out.println("四舍五入:" + Math.round(20.4));
System.out.println("最大值:" + Math.max(5, 20));
System.out.println("最小值:" + Math.min(20.4, 0.1));
System.out.println("绝对值:" + Math.abs(-52));
System.out.println("绝对值:" + Math.random());
/**
* Math.random() 底层是执行了Random类中的nextDouble()
*
public static double random() {
Random rnd = randomNumberGenerator;
if (rnd == null) rnd = initRNG();
return rnd.nextDouble();
}
*/ } }
Math
import java.util.Random; public class RandomTest { public static void main(String[] args) {
// 创建随机数对象
Random random = new Random();
for (int i = 0; i < 100; i++) {
// System.out.println(random.nextBoolean());随机输入boolean值
// System.out.println(random.nextDouble()); 返回0-1但不包含1的随机小数
// System.out.println(random.nextInt()); 返回int类型最小值到最大值之间的随机整数
// System.out.println(random.nextInt(10));返回0-10之间的整数 不包含10
} } }
Random
枚举,Math和Random的更多相关文章
- java Math和Random和UUID
Math类 public final class Math extends Object 以下X表示double,float,int, long abs(X x):求绝对值 max(X x1,X x2 ...
- 10、匿名内部类、枚举类、日期、Math、Random、String、equals、StringBuffer、包装类、对象数组、克隆,标准输出3
1对象的克隆(clone) 单纯的同类的两个对象a0 a00,a0=a00只是栈指向同一个堆,而不是开辟两个新堆,修改其中一个,另一个也会受牵连. 需要重写Clone()方法,并且实现Cloneabl ...
- JavaScript的几种Math函数,random(),ceil(),round(),floor()
1.Math.random():返回 0 ~ 1 之间的随机数.2.Math.ceil():返回值:返回大于或等于x,并且与之最接近的整数(如果x是正数,则把小数"入":如果x是负 ...
- string、math、random、datetime类
1.string类 变量.Replace("想要替换掉的字符或字符串","转换后的字符或字符串");//替换 练习:判断邮箱格式是否正确 ...
- 类库探源——System.Math 和 Random
一.System.Math Math类:为三角函数.对数函数和其他通用数学函数提供常数和静态方法 命名空间: System 程序集 : mscorlib.dll 继承关系: 常用属性: Math. ...
- Java基础知识强化81:Math类random()方法之获取任意范围的随机数案例(面试题)
1. 需求:设计一个方法,可以实现获取任意范围内的随机数 分析:使用方法random()如下: public static double random() 注:Returns a pseudo-ran ...
- Java基础知识强化80:Math类random()方法的小扩展(控制产生目的数字的概率)
1. Math.random()方法: Math.random()出现的数据是0.0<= x < 1.0之间,随机出现一个数据Math.random()>0.1概率是0.9 那么如下 ...
- Java SE基础部分——常用类库之Math和Random类(随机产生数值)
//20160518 Math类常用方法 练习 package MyPackage; public class MathDemo {//定义主类和main方法 public static void m ...
- java--jdk api中其他对象(System,Runtime,Calendar,Math,Random,Date)
转载请申明出处:http://blog.csdn.net/xmxkf/article/details/9796729 day18-01-其他对象(System) SystemDemo java.lan ...
随机推荐
- json文件不能有注释
之前一直忽视了这个问题,直接导致taiga-front的部署的时候不能通过其他IP访问. 如图: 首先是提示 app-loader.js:1 Your conf.json file is not a ...
- vue-cli的webpack模板项目配置文件分析,配置信息详解
比较不错的一篇详解文章: 地址:http://blog.csdn.net/hongchh/article/details/55113751#comments
- Spring Boot入门第一天:Hello, Spring Boot!
原文链接 1. 新建一个Maven Web项目. 2. 配置pom.xml文件. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ...
- springmvc: 普通list数据输出json
springmvc: 普通list数据输出json 加入json依赖 <dependency> <groupId>com.fasterxml.jackson.core</ ...
- 雷林鹏分享:jQuery EasyUI 树形菜单 - 树形网格惰性加载节点
jQuery EasyUI 树形菜单 - 树形网格惰性加载节点 有时我们已经得到充分的分层树形网格(TreeGrid)的数据. 我们还想让树形网格(TreeGrid)按层次惰性加载节点. 首先,只加载 ...
- English trip V1 - B 24. I'm Interested in... 我对...感兴趣 Teacher:Julia Key: (I/We/They) do/don't (He/She/it)does/doesn't
In this lesson you will learn to talk about people's interests. 课上内容(Lesson) interest v. 使…感兴趣(inter ...
- Github的简易操作
一.初涉Github 1.github官网:https://github.com/ 2.三步走完成账号的创建 3.进入Github主页,选择[Create a repository](创建一个仓库用来 ...
- Squid代理配置
更改squid错误页面时间不对的问题解压源码包,进入此路径/usr/local/squid/share/errors/zh-cn(需要更改该目录下的所有文件find -type f |xargs se ...
- gcc -02引起内存溢出'unsigned i'应修订为'volatile unsigned i'
2017-12-13 10:44:19gcc -02引起内存溢出'unsigned i'应修订为'volatile unsigned i' 1.3.100 driver/char/random.cst ...
- 基于VMware模拟实现远程主机网络通信
基于VMware模拟实现远程主机网络通信 目的: 基于VMware软件,模拟实现不同网段的两主机,通过路由器进行通信.两主机host A和host B分别处于VMnet6网络和VMnet7网络,都属于 ...