当前位置: 首页 > news >正文

学习日志05 java

1 java里面的类型转换怎么做?int转double为例

在 Java 里,把int转换为double有自动类型转换和强制类型转换两种方式。下面为你详细介绍:

自动类型转换(隐式转换)

由于double的取值范围比int大,Java 能够自动将int类型转换为double类型,无需编写额外的代码。

java

int numInt = 10;
double numDouble = numInt; // 自动转换
System.out.println(numDouble); // 输出:10.0

强制类型转换(显式转换)

虽然在这种场景下强制类型转换并非必需,但你也可以通过它来明确表明要进行类型转换。

java

int numInt = 10;
double numDouble = (double) numInt; // 强制转换(这里其实可以省略)
System.out.println(numDouble); // 输出:10.0

常见应用场景

1. 基本数据类型转换

java

int a = 5;
int b = 2;
double result = a / b; // 输出2.0,因为a/b先进行整数除法
double correctResult = (double) a / b; // 输出2.5,先将a转为double
2. 方法参数传递时的转换

java

public static void printDouble(double value) {System.out.println(value);
}int num = 20;
printDouble(num); // 自动转换为double类型

注意事项

  1. 精度问题int转换为double不会造成精度损失,因为double的精度更高。
  2. 性能方面:类型转换的开销极小,在大多数情况下无需担心性能问题。
  3. 整数除法:若要进行浮点数除法,需先把其中一个操作数转换为double类型。

2 保留4位小数

// 使用printf进行格式化输出,保留4位小数System.out.printf("%.4f", sum);

 3 Integer.parseInt() 

Integer.parseInt() 是 Java 中用于将字符串转换为整数的静态方法。当你从用户输入(如 Scanner 读取的内容)获取数字时,输入通常是字符串类型,但程序可能需要将其作为整数进行计算,这时就需要使用该方法进行类型转换。

基本用法

java

int num = Integer.parseInt("123");  // 将字符串 "123" 转换为整数 123

参数要求:

  • 输入的字符串必须是纯数字格式(可以包含正负号),否则会抛出 NumberFormatException
  • 例如:"123""-456" 是合法的,但 "123a""1,000"" 123 "(含空格)会报错。

常见场景

1. 从用户输入中读取整数

java

Scanner scanner = new Scanner(System.in);
String input = scanner.nextLine();  // 用户输入 "15"
int age = Integer.parseInt(input);  // 转换为整数 15
2. 处理字符串数组中的数字

java

String[] parts = {"tom", "15", "male"};
int age = Integer.parseInt(parts[1]);  // 将 "15" 转换为 15

异常处理

如果输入的字符串格式不合法,会抛出 NumberFormatException。建议使用 try-catch 捕获异常:

java

try {int num = Integer.parseInt("abc");  // 抛出异常
} catch (NumberFormatException e) {System.out.println("输入格式错误:" + e.getMessage());
}

拓展用法

1. 处理带空格的字符串

java

String str = "  123  ";
int num = Integer.parseInt(str.trim());  // 先使用 trim() 去除空格
2. 转换不同进制的字符串

可以指定第二个参数表示进制(如 2 进制、16 进制):

java

int binary = Integer.parseInt("101", 2);  // 二进制 "101" → 十进制 5
int hex = Integer.parseInt("FF", 16);     // 十六进制 "FF" → 十进制 255

注意事项

  1. 范围限制:转换后的整数必须在 int 的取值范围(-2,147,483,648 到 2,147,483,647)内,否则会抛出异常。

    java

    // 超出 int 范围,报错
    int num = Integer.parseInt("2147483648");  
    
  2. 浮点数字符串:不能直接转换,需先处理小数点。

    java

    // 错误:非纯数字格式
    int num = Integer.parseInt("3.14");  // 正确做法:先转换为 double,再取整
    double d = Double.parseDouble("3.14");
    int num = (int) d;  // 结果为 3
    

相关文章:

  • MySQL数据库——视图
  • 前端流行框架Vue3教程:15. 组件事件
  • Python+Streamlit实现登录页
  • 本地部署ollama及deepseek(linux版)
  • 力扣刷题Day 48:盛最多水的容器(283)
  • 最短路与拓扑(1)
  • 【算法笔记】ACM数论基础模板
  • 反射(Reflection)详解
  • 快速上手Linux nfs网络文件系统
  • 网站遭受扫描攻击,大量爬虫应对策略
  • C语言while循环的用法(非常详细,附带实例)
  • 绘制时间对应的数据曲线
  • C/C++ 程序执行的主要过程
  • [万字]qqbot开发记录,部署真寻bot+自编插件
  • JavaScript进阶(九)
  • mysql8常用sql语句
  • VLLM推理大模型显存不够后,导致程序引擎崩溃的调优方案尝试
  • Mac M系列 安装 jadx-gui
  • java架构设计
  • git cherry-pick和git stash命令详解
  • 持续8年仍难终了的纠纷:败诉方因拒执罪被立案,胜诉方银行账户遭冻结
  • 区域国别学视域下的东亚文化交涉
  • 百利天恒董事长向复旦捐赠三千万元,用于支持创新药物靶点发现等师资建设需要
  • 阚吉林任重庆市民政局党组书记,原任市委组织部主持日常工作的副部长
  • 警方通报男子地铁上拍视频致乘客恐慌受伤:列车运行一度延误,已行拘
  • 虚假认定实质性重组、高估不良债权价值,原中国华融资产重庆分公司被罚180万元