✅作者简介:大家好我是@每天都要敲代码,一位材料转码农的选手,希望一起努力,一起进步!
📃个人主页:@每天都要敲代码的个人主页
🔥系列专栏:牛客网C语言刷题专栏
💬推荐一款模拟面试、刷题神器,从基础到大厂面试题👉点击跳转刷题网站进行注册学习
目录
(1)java.text.DecimalFormat用来数字格式化
(2)DecimalFormat df = new DecimalFormat("数字格式");
(3)数字格式有哪些?
# 代表任意数字
, 代表千分位
. 代表小数点
0 代表不够时补0
例如:###,###.##;表示:加入千分位,保留2个小数。
- package com.bjpowernode.javase.number;
- import java.text.DecimalFormat;
-
- public class DecimalFormatTest01 {
- public static void main(String[] args) {
- DecimalFormat df = new DecimalFormat("###,###.##");
- String s = df.format(12345.561243);
- System.out.println(s);//"12,345.56"
-
- //保留4个小数位,不够补上0
- DecimalFormat df2 = new DecimalFormat("##,###.0000");
- String s2 = df2.format(1234.56);
- System.out.println(s2); //1,234.5600
- }
- }
java.math.BigDecimal 属于大数据,精度极高。不属于基本数据类型,属于java对象(引用数据类型)这是SUN提供的一个类。专门用在财务软件当中
- package com.bjpowernode.javase.number;
- import java.math.BigDecimal;
-
- public class BigDecimalTest {
- public static void main(String[] args) {
- //1.精度极高的100,不是普通的数据100
- BigDecimal v1 = new BigDecimal(100);
- //2.精度极高的200,不是普通的数据200
- BigDecimal v2 = new BigDecimal(200);
- //3.v1和v2都是引用,不能用"+"直接相加,需要调用方法
- BigDecimal v3 = v1.add(v2);
- System.out.println(v3); //300
- BigDecimal v4 = v1.subtract(v2);
- System.out.println(v4); //-100
- BigDecimal v5 = v1.multiply(v2);
- System.out.println(v5); //20000
- BigDecimal v6 = v1.divide(v2);
- System.out.println(v6); //0.5
-
- }
- }
- package com.bjpowernode.javase.random;
- //产生随机数
- import java.util.Random;
-
- public class RandomTest01 {
- public static void main(String[] args) {
- //1.产生随机数(int类型取值范围内的数字)
- Random random = new Random();
- int num1 = random.nextInt();
- System.out.println(num1);
-
- //2.有边界的产生随机数
- //nextInt翻译为:下一个int类型的数据是101,表示只能取到100
- //产生[0-100]之间的随机数,不包括101
- int num2 = random.nextInt(101);
- System.out.println(num2);
- }
- }
编写程序,生成5个不重复的随机数[0-100]。重复的话重新生成。最终生成的5个随机数放到数组中,要求数组中这5个随机数不重复。
- package com.bjpowernode.javase.random;
- import java.util.Arrays;
- import java.util.Random;
-
- /*
- 编写程序,生成5个不重复的随机数[0-100]。重复的话重新生成。
- 最终生成的5个随机数放到数组中,要求数组中这5个随机数不重复。
- */
- public class RandomTest02 {
- public static void main(String[] args) {
- //1.创建一个Random对象
- Random random = new Random();
-
- //2.定义一个长度为5的数组
- int[] arr = new int[5];
- //动态创建的数组,默认值都是0,这样就会分不清是原来默认的0,
- //还是产生的随机数0;所以才开始先进行一下初始化为-1
- for (int i = 0; i < arr.length; i++) {
- arr[i] = -1;
- }
-
- //3.把生成的数据放到数组里面
- int index = 0; //定义一个下标
- while(index < arr.length){
- //生成随机数
- int num = random.nextInt(101);//为了测试bug可以把这个改成5
- if(!contains(arr,num)){
- arr[index] = num;
- index++;
- }
-
- }
-
- //5.打印输出
- for (int i = 0; i < arr.length; i++) {
- System.out.print(arr[i]+" ");
- }
-
- }
-
- //4.封装一个判断数组里有没有生成随机数的方法
- public static boolean contains(int[] arr, int key) {
- /*
- //为了查找效率,采用二分查找(记住先排序)
- //1.先进行排序(先排序又会造成每次顺序重排,出现bug)
- Arrays.sort(arr);
- //2.查找,>=0说明这个元素找到了,找到了说明存在
- return Arrays.binarySearch(arr,key) >= 0;
- */
-
- //直接遍历
- for (int i = 0; i < arr.length; i++) {
- if(arr[i] == key){
- return true;
- }
- }
- return false;
- }
-
-
- }
需求:计算两个整型数据的商,计算成功返回1,计算失败返回0(就使用int返回值)
- // 标识符,关键字不能做标识符。enum是关键字。
- package com.bjpowernode.javase.enum1;
- /*
- 这个案例没有使用java中的枚举,分析以下程序,在设计方面有什么缺陷?
- 以下代码可以编译,也可以运行。这些都没有问题。就是设计上你觉得有什么缺陷?
- */
- public class EnumTest01 {
- public static void main(String[] args) {
- //System.out.println(10/0); //java.lang.ArithmeticException: / by zero
-
- int x = EnumTest01.divide(1,2);
- System.out.println(x); //1
- int y = EnumTest01.divide(1,0);
- System.out.println(y); //0
- }
-
- //需求:计算两个整型数据的商,计算成功返回1,计算失败返回0
- // 设计缺陷?在这个方法的返回值类型上。返回一个int不恰当。
- // 既然最后的结果只是成功和失败,最好使用布尔类型。因为布尔类型true和false正好可以表示两种不同的状态。
- public static int divide(int a,int b){
- //------异常处理机制
- try{
- //正常运行
- int c = a/b; //如果这里出错,不会执行try下面的代码,直接执行catch语句下面的
- return 1; //比如:这里返回10,编译器也不会报错,但是已经不满足需求了
- }catch(Exception e){
- //程序发生了异常
- return 0;
- }
- }
- }
-
- package com.bjpowernode.javase.enum1;
-
- public class EnumTest02 {
-
- public static void main(String[] args) {
- boolean str1 = divide(10,2);
- System.out.println(str1?"计算成功":"计算失败");
-
- boolean str2 = divide(10,0);
- System.out.println(str2?"计算成功":"计算失败");
-
- }
-
- //需求:计算两个整型数据的商,计算成功返回1,计算失败返回0
- //使用boolean类型
- public static boolean divide(int a,int b){
- //------异常处理机制
- try{
- //正常运行
- int c = a/b;
- return true; //这里只要不是true就会报错,不像int返回其它值也不会报错
- }catch(Exception e){
- //程序发生了异常
- return false;
- }
- }
- }
-
-
(1)divide这个方法的执行结果是只有两种结果,使用true和false完全没问题,但是如果执行的结果有很多种,这就需要枚举类型了!
(2)枚举:一枚一枚可以列举出来的,才建议使用枚举类型。
(3)枚举编译之后也是生成class文件。
(4)枚举也是一种引用数据类型。
(5)枚举中的每一个值可以看做是常量。
(6)枚举类型怎么定义,语法是?
enum 枚举类型名{ 枚举值1,枚举值2 }(7)结果只有两种情况的,建议使用布尔类型。
结果超过两种并且还是可以一枚一枚列举出来的,建议使用枚举类型。
例如:颜色、四季、星期等都可以使用枚举类型。(8)枚举的访问,是采用"枚举名.元素";例如:enum Result{SUCCESS,FAIL},调用的时候就是Result.SUCCESS
- package com.bjpowernode.javase.enum1;
-
- public class EnumTest03 {
-
- public static void main(String[] args) {
- Result result = divide(10,2);
- System.out.println(result == Result.SUCCESS?"计算成功":"计算失败"); //计算成功
-
- Result result1 = divide(10,0);
- System.out.println(result1 == Result.SUCCESS?"计算成功":"计算失败"); //计算失败
-
- }
-
- //需求:计算两个整型数据的商,计算成功返回1,计算失败返回0
- //使用boolean类型
- public static Result divide(int a,int b){
- //------异常处理机制
- try{
- //正常运行
- int c = a/b;
- return Result.SUCCESS; //这里只要不是true就会报错,不向返回int其它值也不会报错
- }catch(Exception e){
- //程序发生了异常
- return Result.FAIL;
- }
- }
- }
-
- enum Result{
- // SUCCESS 是枚举Result类型中的一个值
- // FAIL 是枚举Result类型中的一个值
- // 枚举中的每一个值,可以看做是“常量”
- SUCCESS,
- FAIL
- }
高版本的JDK,支持int、String、枚举;byte short char也可以,因为存在自动类型转换。
- package com.bjpowernode.javase.enum1;
- //枚举和switch结合
- public class EnumTest04 {
- public static void main(String[] args) {
- switch(Season.SUMMER){ //switch里面需要枚举名Season
- case SPRING: //case里面不需要枚举名Season
- System.out.println("春天");
- break;
- case SUMMER:
- System.out.println("夏天");
- break;
- case AUTUMN:
- System.out.println("秋天");
- break;
- case WINTER:
- System.out.println("冬天");
- break;
- }
- }
- }
-
- //枚举
- enum Season{
- SPRING, SUMMER,AUTUMN,WINTER
- }
你想要的牛客都有,各种大厂面试真题在等你哦!快快通过下方链接注册加入刷题大军吧!
💬刷题神器,从基础到大厂面试题👉点击跳转刷题网站
