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

做响应式网站的公司优惠券网站做代理怎么样

做响应式网站的公司,优惠券网站做代理怎么样,做穿越火线的网站资料,服装网站建设准备一、空指针问题的本质 空指针异常#xff08;Null Pointer Exception#xff09;是编程中最常见的错误之一#xff0c;在C语言和Java中表现不同但本质相同#xff1a;试图访问一个不存在对象的内存地址。 C语言中的空指针 int *ptr NULL; printf(%d, *ptr)… 一、空指针问题的本质 空指针异常Null Pointer Exception是编程中最常见的错误之一在C语言和Java中表现不同但本质相同试图访问一个不存在对象的内存地址。 C语言中的空指针 int *ptr NULL; printf(%d, *ptr); // 段错误(Segmentation fault)C语言中直接操作空指针会导致程序崩溃且错误信息不明确。 Java中的空指针 String str null; System.out.println(str.length()); // NullPointerExceptionJava会抛出明确的NullPointerException但程序不一定完全崩溃。 二、Java的空指针安全机制 1. 异常处理机制 Java用异常机制替代了C的直接崩溃 try {String str null;System.out.println(str.length()); } catch (NullPointerException e) {System.out.println(捕获到空指针异常 e.getMessage());// 可以在这里进行恢复操作 }2. 对象初始化要求 Java强制要求局部变量使用前必须初始化 // C语言中可以只声明不初始化 // int *ptr; // Java会编译报错 String str; // System.out.println(str); // 编译错误可能尚未初始化三、Java中预防空指针的6大实战技巧 1. 防御性编程最基础 public void printLength(String str) {if (str ! null) { // 显式检查System.out.println(str.length());} else {System.out.println(输入字符串为null);} }2. Objects工具类Java 7 import java.util.Objects;String str null; System.out.println(Objects.requireNonNull(str, 参数不能为null).length()); // 抛出带消息的NullPointerException3. Optional容器类Java 8革命性改进 import java.util.Optional;OptionalString optionalStr Optional.ofNullable(getString());// 方式1存在时执行 optionalStr.ifPresent(s - System.out.println(s.length()));// 方式2提供默认值 String result optionalStr.orElse(默认值);// 方式3链式操作 int length optionalStr.map(String::length).orElse(0);4. 注解约束结合框架使用 // Spring的注解 public void getUser(NonNull String userId) {// 方法内不需要再判空 }// Lombok注解 Getter Setter NonNull private String name;5. 字符串处理专用方法 // 比较字符串时把常量放前面 constant.equals(variable);// 使用StringUtilsApache Commons StringUtils.isEmpty(str); // 同时检查null和空串6. 空对象模式设计模式层面解决 interface Animal {void makeSound(); }class Dog implements Animal {public void makeSound() { System.out.println(汪汪); } }class NullAnimal implements Animal { // 空对象实现public void makeSound() { /* 静默处理 */ } }// 使用时 Animal animal getAnimal() ! null ? getAnimal() : new NullAnimal(); animal.makeSound(); // 永远不会NPE四、Java 14的空指针异常增强 Java 14引入了更友好的空指针异常信息 public class EnhancedNPE {public static void main(String[] args) {Person person null;System.out.println(person.address.city); // 旧版只会提示某行出错// Java 14输出// Cannot read field city because person.address is null} }class Person {Address address; }class Address {String city; }五、与C语言的对比总结 特性C语言Java空指针表现段错误/程序崩溃抛出NullPointerException错误信息不明确明确异常堆栈处理方式无法捕获try-catch机制预防手段全靠程序员检查多种语言级解决方案内存安全不安全相对安全 六、实际项目中的最佳实践 DAO层处理 public User getUserById(Long id) {return Optional.ofNullable(userRepository.findById(id)).orElseThrow(() - new BusinessException(用户不存在)); }Service层处理 public void updateUser(UserDTO userDTO) {User user Optional.ofNullable(userRepository.findById(userDTO.getId())).orElseGet(User::new); // 不存在则创建新用户// 后续操作... }集合处理 ListString list getPossibleNullList(); for (String item : Optional.ofNullable(list).orElse(Collections.emptyList())) {// 安全遍历 }七、思考题 以下代码有哪些潜在的空指针风险如何改进 public class OrderService {public double calculateTotal(Order order) {return order.getItems().stream().mapToDouble(item - item.getPrice() * item.getQuantity()).sum();} }参考答案 public double calculateTotal(Order order) {if (order null) throw new IllegalArgumentException(Order不能为null);return Optional.ofNullable(order.getItems()).orElseGet(Collections::emptyList).stream().filter(Objects::nonNull) // 过滤掉null的item.mapToDouble(item - Optional.ofNullable(item.getPrice()).orElse(0.0) *Optional.ofNullable(item.getQuantity()).orElse(0)).sum(); }结语 Java通过以下方式显著改善了C语言中的空指针问题 明确的异常机制替代直接崩溃丰富的API支持Optional等编译期的更多检查现代化的工具和框架支持 关键建议 优先使用Optional进行包装善用Objects工具类对输入参数进行有效性验证采用空对象模式等设计模式 记住好的代码不是没有null而是妥善处理了null
http://www.dnsts.com.cn/news/58982.html

相关文章:

  • 进入网站后台代码多用户商城系统哪种好用
  • 网站建设平台加盟在线培训平台有哪些
  • 网站开发工资高嘛花生壳可做网站吗
  • 对网站建设的建议外贸公司怎么找客户的
  • 北京seo平台网站建设哈尔滨网站优化4
  • 如何网站推广策划网站建设用哪个
  • 在那些网站可以接兼职做搬瓦工vps做网站速度怎么样
  • 建设工程职称 在哪个网站视频 wordpress 主题
  • 最好的网站建设公司有哪些节点网站
  • 怎么用vscode做网站wordpress十大主题
  • 网站模版免费企业网站的开发公司
  • 湖北系统建站怎么用公关负面处理公司
  • 瑞安公司做网站淘宝基地网站怎么做
  • 手机版网站模板 免费石家庄工程职业学院
  • iis网站asp.net部署做公司产品展示网站
  • 做网站买什么空间南宁专业网站开发
  • 如何用家庭电脑做网站微信小程序页面模板
  • 做网站 百度推广wordpress时钟
  • 浅谈国内高校英文网站的建设现状华为云域名注册
  • 做地方行业门户网站需要什么资格手机版的网站怎么做
  • 酒业公司网站模板评价一个网站的优缺点
  • 寿县住房与城乡建设局网站仿站模板
  • 珠海建站网站模板网站页面不更新
  • 蚌埠做企业网站推动高质量发展就是要
  • 陕西网渭南站泊头做网站的有哪些
  • 想建设一个网站自己接一些小活手机网站怎么做的
  • 江西恒通建设工程有限公司网站免费网站app下载汅api
  • 机关网站建设考核测评总结做网站一般需要哪些文件夹
  • 哪个网站专题做的好全案营销的未来发展趋势
  • 泰安建站哪家好东莞市建设工程质监督站网站