自学习记录-编程语言的特点(持续记录)

server/2025/2/5 19:43:20/

学习的顺序是C -> python -> C++ -> Java。在讲到某项语言的特点是,可能会时不时穿插其他语言的特点。

Java

1 注解Annotation

Python中也有类似的Decorators。以下为AI学习了解到的:

Java的Annotation是一种元数据(metadata),它提供了一种在代码中添加额外信息的方式。这些信息可以被编译器、开发工具或运行时环境读取和处理。注解本身不会直接影响代码的逻辑,但它们可以用于生成代码、配置框架、进行代码分析等。

元数据:注解是附加在代码上的元数据,用于描述代码的某些特性。
不影响代码逻辑:注解本身不会改变代码的运行逻辑,但可以通过工具或框架影响代码的行为。
广泛用途:注解可以用于编译时检查、代码生成、运行时配置等。

语法

注解以 @ 符号开头,后面跟注解的名称。注解可以带有参数,参数以键值对的形式传递

内置注解(具体要用那些,直接问AI)

Java 提供了一些内置注解,常用的包括:

  1. @Override
    用于标记方法重写了父类的方法。

如果方法没有正确重写父类的方法,编译器会报错。

  1. @Deprecated
    用于标记方法或类已过时,不推荐使用。

编译器会发出警告,提醒开发者使用替代方案。

  1. @SuppressWarnings
    用于抑制编译器警告。

例如:@SuppressWarnings(“unchecked”) 可以抑制未检查的类型转换警告。

  1. @FunctionalInterface
    用于标记接口是函数式接口(只有一个抽象方法)。

例如:Runnable 接口就是一个函数式接口。

自定义注解:

Java 允许开发者定义自己的注解。自定义注解使用 @interface 关键字定义。

案例:

java">import java.lang.annotation.*;// 定义一个注解
@Retention(RetentionPolicy.RUNTIME) // 注解在运行时保留
@Target(ElementType.METHOD)         // 注解只能用于方法
public @interface MyAnnotation {String value() default "default value"; // 注解的参数int count() default 1;                  // 另一个参数
}//使用自定义注解
public class MyClass {@MyAnnotation(value = "Hello", count = 3)public void myMethod() {// 方法体}
}

注解的工作原理

编译时处理:通过注解处理器(Annotation Processor)在编译时处理注解。
运行时处理:通过反射机制在运行时读取注解信息。

注解信息读取案例:
案例一:

java">public class MyClass {@MyAnnotation(value = "Hello", count = 3)public void myMethod() {// 方法体}public static void main(String[] args) throws Exception {Method method = MyClass.class.getMethod("myMethod");MyAnnotation annotation = method.getAnnotation(MyAnnotation.class);if (annotation != null) {System.out.println("Value: " + annotation.value()); // 输出:Value: HelloSystem.out.println("Count: " + annotation.count()); // 输出:Count: 3}}
}

案例二:

java">public class MyClass {@MyAnnotation(value = "Hello", count = 3)public void myMethod() {// 通过反射访问注解信息try {// 获取当前方法的注解MyAnnotation annotation = this.getClass().getMethod("myMethod").getAnnotation(MyAnnotation.class);if (annotation != null) {System.out.println("Value: " + annotation.value()); // 输出:Value: HelloSystem.out.println("Count: " + annotation.count()); // 输出:Count: 3}} catch (NoSuchMethodException e) {e.printStackTrace();}}public static void main(String[] args) {MyClass obj = new MyClass();obj.myMethod();}
}

总结

注解是元数据:用于描述代码的特性。
内置注解:如 @Override、@Deprecated 等。
自定义注解:使用 @interface 定义。
元注解:用于修饰其他注解。
用途广泛:编译时检查、代码生成、运行时配置等。

Python

1 装饰器Decorator

类似Java的注解


http://www.ppmy.cn/server/165215.html

相关文章

【华为OD机试】真题E卷-招聘(Java)

一、题目描述 题目描述: 某公司组织一场公开招聘活动,假设由于人数和场地的限制,每人每次面试的时长不等,并已经安排给定,用(S1,E1)、 (S2,E2)、 (Sj,Ej)…(Si < Ei,均为非负整数)表示每场面试的开始和结束时间。 面试采用一对一的方式,即一名面试官同时只能面试一名…

ROS应用之SwarmSim在ROS 中的协同路径规划

SwarmSim 在 ROS 中的协同路径规划 前言 在多机器人系统&#xff08;Multi-Robot Systems, MRS&#xff09;中&#xff0c;SwarmSim 是一个常用的模拟工具&#xff0c;可以对多机器人进行仿真以实现复杂任务的协同。除了任务分配逻辑以外&#xff0c;SwarmSim 在协同路径规划方…

攻防世界 simple_php

&#xfeff;<?php show_source(__FILE__);//显示 PHP 文件的源码 include("config.php");// 包含了一个config.php文件 $a$_GET[a];//获取GET 参数 a 和 b $b$_GET[b]; if($a0 and $a) {echo $flag1; } if(is_numeric($b))//防止数字输入 {exit(); } if($b>1…

【ChatGPT:开启人工智能新纪元】

一、ChatGPT 是什么 最近,ChatGPT 可是火得一塌糊涂,不管是在科技圈、媒体界,还是咱们普通人的日常聊天里,都能听到它的大名。好多人都在讨论,这 ChatGPT 到底是个啥 “神器”,能让大家这么着迷?今天咱就好好唠唠。 ChatGPT,全称是 Chat Generative Pre-trained Trans…

微服务知识——微服务架构的演进过程

文章目录 初始架构&#xff1a;单机架构第一次演进&#xff1a;Tomcat与数据库分开部署第二次演进&#xff1a;引入本地缓存和分布式缓存第三次演进&#xff1a;引入反向代理实现负载均衡第四次演进&#xff1a;数据库读写分离第五次演进&#xff1a;数据库按业务分库第六次演进…

Docker入门篇(Docker基础概念与Linux安装教程)

目录 一、什么是Docker、有什么作用 二、Docker与虚拟机(对比) 三、Docker基础概念 四、CentOS安装Docker 一、从零认识Docker、有什么作用 1.项目部署可能的问题&#xff1a; 大型项目组件较多&#xff0c;运行环境也较为复杂&#xff0c;部署时会碰到一些问题&#xff1…

PHP 常用函数2025.02

PHP implode() 函数 语法 implode(separator,array) 参数描述separator可选。规定数组元素之间放置的内容。默认是 ""&#xff08;空字符串&#xff09;。array必需。要组合为字符串的数组。 技术细节 返回值&#xff1a;返回一个由数组元素组合成的字符串。PHP 版…

DeepSeek:智能时代的AI利器及其应用前景

1.DeepSeek是什么&#xff1f; DeepSeek是一款基于人工智能技术的工具&#xff0c;旨在帮助用户高效处理和分析数据、生成内容、优化工作流程等。无论是数据分析、自然语言处理&#xff0c;还是自动化任务&#xff0c;DeepSeek都能提供强大的支持。其核心技术涵盖了机器学习、深…