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

JAVA基础——方法和类型转换

JAVA基础——方法和类型转换

一、方法详解

(一)方法的定义与作用
  • 定义:方法是执行特定任务的代码块,代表一个功能,可接收数据处理并返回结果。
  • 作用:封装重复逻辑,提高代码复用性;模块化设计,增强程序可读性。
(二)方法的完整定义格式
修饰符 返回值类型 方法名(形参列表) {方法体代码; // 实现具体功能return 返回值; // 无返回值时省略(返回值类型为void)
}
  • 修饰符:控制方法的访问权限(如public static)。
  • 返回值类型:方法处理结果的数据类型,若无结果则为void
  • 形参列表:接收的数据参数(如int a, int b),可无参数。
  • 方法体:具体执行的逻辑代码。
  • return:返回处理结果(void方法中可省略或用return;提前结束方法)。
(三)方法的调用方式
  • 无参数无返回值:直接调用方法名。
    public static void printHello() {System.out.println("Hello World!");
    }
    // 调用
    printHello(); // 输出:Hello World!
    
  • 有参数有返回值:调用时传入参数,用变量接收返回值。
    public static int sum(int a, int b) {return a + b;
    }
    // 调用
    int result = sum(3, 5); // result = 8
    
(四)方法的注意事项
  1. 方法重载(Overload)
    • 同一类中,方法名相同但形参列表不同(参数个数、类型或顺序不同)。
    • 作用:简化方法调用,适应不同参数类型的需求。
    public static void print(int num) {System.out.println("整数:" + num);
    }
    public static void print(String str) {System.out.println("字符串:" + str);
    }
    // 调用
    print(100); // 输出:整数:100
    print("黑马程序员"); // 输出:字符串:黑马程序员
    
  2. void方法的return
    • 可使用return;提前结束方法(无返回值)。
    public static void checkAge(int age) {if (age < 0) {System.out.println("年龄不能为负数!");return; // 提前结束方法}System.out.println("年龄合法:" + age);
    }
    

二、类型转换

(一)自动类型转换(隐式转换)
  • 定义:小范围类型自动转换为大范围类型,无需额外代码。
  • 数据类型范围顺序
    byte < short < char < int < long < float < double
  • 规则
    • 整数类型之间,范围小的可直接赋值给范围大的(如byte → int)。
    • byteshortchar参与运算时自动转为int
  • 示例
    byte b = 100;
    int i = b; // 自动转换,i = 100char c = 'A'; // 'A'的ASCII码为65
    int num = c + 1; // c自动转为int,num = 66
    
(二)强制类型转换(显式转换)
  • 定义:大范围类型转为小范围类型,需手动添加类型转换符(数据类型)
  • 格式
    数据类型 变量 = (数据类型) 值或变量;
    
  • 注意事项
    • 可能导致数据丢失或溢出(如整数超出目标类型范围)。
    • 浮点型转整型会直接截断小数部分。
  • 示例
    int i = 150;
    byte b = (byte)i; // 150超过byte范围(-128~127),结果为-106(二进制溢出)double d = 3.9;
    int num = (int)d; // num = 3(直接丢弃小数部分)
    
(三)表达式的自动类型提升
  • 规则:表达式中,小范围类型自动转为最大范围类型后再运算。
  • 示例
    byte b1 = 10, b2 = 20;
    int sum = b1 + b2; // b1、b2自动转为int,sum = 30int i = 10;
    double d = i + 3.14; // i自动转为double,d = 13.14
    

三、典型案例

(一)方法重载案例
public class MethodDemo {// 计算两个整数的和public static int sum(int a, int b) {return a + b;}// 计算三个整数的和(重载方法)public static int sum(int a, int b, int c) {return a + b + c;}// 计算两个小数的和(重载方法)public static double sum(double a, double b) {return a + b;}public static void main(String[] args) {System.out.println(sum(1, 2)); // 3System.out.println(sum(1, 2, 3)); // 6System.out.println(sum(1.5, 2.5)); // 4.0}
}
(二)类型转换案例
public class TypeConversionDemo {public static void main(String[] args) {// 自动类型转换short s = 100;long l = s; // 自动转换,l = 100// 强制类型转换int i = 200;byte b = (byte)i; // 200的二进制为11001000,强制转byte后为-56(补码规则)System.out.println(b); // 输出:-56// 表达式类型提升char c = 'B'; // ASCII码66int result = c + 3.5; // c转为int(66),3.5转为double,result自动为double(69.5)System.out.println(result); // 输出:69.5}
}

四、注意事项

  1. 方法调用:必须通过方法名调用,否则编译报错。
  2. 类型转换安全:强制转换前需确保数据在目标类型范围内,避免意外结果。
  3. 表达式运算顺序:先进行类型提升,再按运算符优先级计算。

相关文章:

  • 操作系统————四种动态分区分配算法详解(首次适应,最坏适应,最佳适应,邻近适应)
  • 【Java高阶面经:微服务篇】3.熔断机制深度优化:从抖动治理到微服务高可用架构实战
  • Python Day27 学习
  • Linux僵死进程以及文件操作
  • LW-CTrans:一种用于三维医学图像分割的轻量级CNN与Transformer混合网络|文献速递-深度学习医疗AI最新文献
  • RFID技术在半导体晶圆卡塞盒中的应用方案
  • 计算机可以深度结合、并且很有发展空间的领域
  • 机器学习 day05
  • Git客户端安装、操作
  • Vue3 中使用 provide/inject 实现跨层级组件传值失败的原因及解决方案
  • Vue之入门(Vue是什么以及Vue工作原理)
  • 数据要素如何重构人力资本升级
  • 消息传递--树形dp--50?!
  • windows/linux 模拟鼠标键盘输入
  • 创建型:建造者模式
  • 文件操作和IO—初识文件
  • leetcode hot100:三、解题思路大全:哈希(两数之和、字母异位词分组、最长连续序列)、双指针(移动零、盛最多水的容器、三数之和、接雨水)
  • 《C 语言 sizeof 与 strlen 深度对比:原理、差异与实战陷阱》
  • COMSOL软件入门
  • 爱普生Epson PX-S887打印机信息
  • 渝昆高铁云南段路基土石方工程已完成97%,桥隧施工完成超90%
  • 顶刊论文现“飙脏话辱骂第二作者”,期刊回应:正积极调查
  • 三部门印发《2025年深入推进IPv6规模部署和应用工作要点》
  • “高原笑匠”、西藏著名表演艺术家扎西顿珠去世
  • 王毅同丹麦外交大臣会谈,表示在格陵兰问题充分尊重丹麦主权和领土完整
  • 十大券商看后市|A股指数有望进一步缓步推高,淡化短期波动