Hello之CJavaPython

news2025/1/19 14:39:42

@

前言,原来是java程序员,最近学习了一段时间发现,java只关注业务逻辑的开发,封装了很多的东西,导致底层的许多东西不是太了解,突然某一天,灵光凸现,既然语言都是相通的,我是不是可以利用java的知识来类比学习其他的语言呢。

哈哈,学习语言第一步,是不是从HelloWorld开始学习。开始我们的学习之旅吧。

C之HelloWorld

#include<stdio.h>
int main(){
	printf("hello world \n");
	return 0;
}

Java之HelloWorld

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World");
    }
}

Python之HelloWorld

#!/usr/bin/python3
print("Hello world")

三者代码分析:

  • 通过观察三段代码的代码头部只有C语言引入了#include<stdio.h>这个函数库,那么这个函数的作用是什么的呢,不要它会报错嘛,经过尝试以后发现,删除这段代码后测试发现,程序可以正常执行但是会出现一个警告:

    也就是说,这句话是想来让我们的C语言文件来包含一个东西,那这个东西自然就是我们后面跟上的<stdio.h> ,而stdio.h分明就是以stdio为名,类型是h的文件啊。这里,我们将再引入一个概念:头文件。而这个stdio.h正是这个头文件。

头文件概念解释:用中文来说,就是我们的编译器在尝试翻译我们的代码时,找不到printf是什么意思,他翻译不出来。
虽然说这个程序也是可以运行的,为什么呢,因为现在的编译器比较智能,它可以自动的在编译的时候帮你添加缺失的基本头文件,所以,你这样编译完之后的程序也能输出Hello World的。
那么为什么加了头文件编译器就能翻译成功了呢。秘密,就在于头文件可以告诉编译器printf是什么,他能告诉编译器他能做什么,简单的,我们就可以把他理解为它是一张清单,里面列出了一些函数,可以教会编译器去怎么来翻译我们的C语言文件。
这就是头文件的作用。
那么,我们再回到那句#include <stdio.h>吧。
现在,我们已经知道了,这句话的作用是教会编译器输出文字,而stdio.h相当于一本教科书,编译器能够看懂它。
我们再来谈谈为什么要在include之前加一个#吧。
其实,这个#可以帮助编译器区分预处理器指令和普通的代码,其实也就是说,以#开头的代码叫做预处理器指令,是一种特殊的代码,为什么说它特殊呢?因为编译器首先看的就是以#开头的代码,然后再看我们的主体代码的,他有着“优先权”。
再来,就是这本“教科书”的名字了——stdio.h,.h很好理解,一个文件的后缀,header的缩写,代表的他是一个头文件。而stdio呢,我们再次开始我们的单词查询法(顺便提一下,计算机对英文要求很高,尤其是单词简写,要有一定的敏感性):首先std是standard的简写,是标准的意思,而io则是两个单词的缩写,分别是input和output,分别代表输入输出,所以stdio便是标准输入输出的意思,它里面定义了一些输入和输出的函数,比如我们的printf函数便是其中的标准输出函数之一。
那么,为什么是用<>而不是用""把stdio.h括起来呢,这里也是有区别的。在操作系统(一般指(类)Unix系统)内部,有着固定的地方存放头文件,而<>就是让C语言编译器去那个固定的地方读取头文件,而不是别的地方。
所以#include <stdio.h>就是让C语言编译器去那个特定的地方读取我们的标准输入输出头文件。
那么至于#include "文件名"呢,他则是从我们存.c的源代码文件的同一目录读取头文件(因为我们自己也可以写头文件,本文暂时不介绍),并不是从特定的目录读取。
摘抄自-----https://www.jianshu.com/p/db5e0709eb32

  • java和Python没有C语言中的头文件,为啥可以执行成功,而且没有警告或者报错的信息呢?
    在Java中,我们使用类似的关键字import来添加包并使用其中的方法。但是在高级语言中,默认情况下导入的包很少。 例如,在Java和Python中,java.lang.*语言默认情况下导入。所以我们发现即使我们不需要导入文件,我们的print也可以正常的使用,通过java源码查看,println虽然属于:package java.io;,但是System这个类中是有java.io.*文件的,所以不需要导入java.io也可以正常使用。
    对于Python来说,print()函数是内置的一个函数,不需要引入可以直接使用,这是比c语言方便一点。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/427918.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

工业机器人远程监控解决方案

一、项目背景 随着我国科技不断进步发展和产业升级的不断进行&#xff0c;现阶段机器人应用在生产制造行业以及运输行业已经变得越来越广泛。工业机器人机构复杂、维护成本高&#xff0c;机器人应用的这一行业现状&#xff0c;对工业机器人生产企业的产品高品质服务能力提出了…

Samba共享

关闭selinux跟防火墙 setenforce 0 systemctl stop firewalld 安装samba以及客户端 yum install samba samba-client -y 创建共享目录 mkdir -p /data/share1 mkdir -p /data/public 添加samba用户并配置权限 useradd zsuser smbpasswd -a zsuser 修改配置文件并重启服…

linux线程调度策略

系统中既有分时调度&#xff0c;又有时间片轮转调度和先进先出调度 学习这个主要为了在linux多线程中&#xff0c;解决几条指令间延时在1-2ms内&#xff1b; 1.比如之前处理过&#xff1a;给一个板子发送一个can指令&#xff0c;接着需要给另外一个模块发送移动指令&#xff0c…

ESP32设备驱动-CCS811数字气体空气质量传感器驱动

CCS811数字气体空气质量传感器驱动 文章目录 CCS811数字气体空气质量传感器驱动1、CCS811介绍2、硬件准备3、软件准备4、驱动实现1、CCS811介绍 CCS811 是一种低功耗数字气体传感器解决方案,它集成了用于检测通常在室内发现的低水平 VOC 的气体传感器解决方案、微控制器单元 …

机器学习——分类算法

K-近邻算法(KNN) K Nearest Neighbor算法又叫KNN算法&#xff0c;它的原理是如果一个样本在特征空间中的k个最相似&#xff08;即特征空间中最邻近&#xff09;的样本中的大多数属于某一个类别&#xff0c;则该样本也属于这个类别。 两个样本间距离可通过欧式距离计算&#x…

FE_HTML标签学习

1 图像标签 <body> <img src"./image/img.png" alt"图片标签属性" title"提示文本&#xff0c;鼠标放到图像上显示的文字" > </body>2 超链接标签 <body><h4>1.外部链接</h4><a href"http://www.…

4点决定你在银行的到手薪资

众所周知&#xff0c;银行的工资水平在整个国家中也是排名靠前的。然而&#xff0c;全国范围之内&#xff0c;有4000多家银行&#xff0c;有20多万个网点&#xff0c;不同的银行&#xff0c;甚至同一银行不同区域的网点之间的工资差别都是比较大的&#xff0c;即使是在同一家银…

手搭手SpringBoot之REST接口风格

REST一种软件架构风格 REST即表述性状态传递&#xff08;英文&#xff1a;Representational State Transfer&#xff0c;简称REST,中文&#xff1a;表示层状态转移&#xff09;是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。它是一种针对网络应用的设计…

gRPC-Go源码解读二 传输层数据处理流程

本篇文章主要介绍gRPC Client传输层的处理流程&#xff0c;如有疑问&#xff0c;欢迎指教。 gRPC版本&#xff1a; 1.54.0-dev gRPC基于http2传输&#xff0c;传输层主要处理http2相关的内容。RFC7540制定了http2协议规范&#xff0c;因此&#xff0c;这部分代码的逻辑绝大部分…

科普|FCC的卫星标准 为什么又说是FCC Part25呢?

我们今天介绍的FCC的卫星标准&#xff0c;在美国是作为一种法律规定&#xff0c;具有法律效力的标准&#xff0c;通常又称为法规文件。 01 — FCC Part 25 我们先从CFR说起&#xff0c;《美国联邦法规》&#xff08; Code of Federal Regulations &#xff0c;简称CFR&#…

【JAVAEE】网络原理之网络发展史

目录 &#x1f381;1. 独立模式 &#x1f383;2. 网络互连 &#x1f388;2.1 局域网 LAN ✨2.1.1 基于网线直连 &#x1f451;2.2.2 基于集线器组建 &#x1f48b;2.2.3 基于交换机组建 &#x1f457;2.2.4 基于交换机与路由器组建 &#x1f388;2.2 广域网 21世纪是一…

我的第一台电脑------计算机类专业学生购置电脑的一些个人心得

⬜⬜⬜ &#x1f430;&#x1f7e7;&#x1f7e8;&#x1f7e9;&#x1f7e6;&#x1f7ea;(*^▽^*)欢迎光临 &#x1f7e7;&#x1f7e8;&#x1f7e9;&#x1f7e6;&#x1f7ea;&#x1f430;⬜⬜⬜ ✏️write in front✏️ &#x1f4dd;个人主页&#xff1a;陈丹宇jmu &am…

Web 攻防之业务安全:接口参数账号篡改测试(修改别人邮箱 || 手机号为自己的)

Web 攻防之业务安全&#xff1a;接口参数账号篡改测试. 业务安全是指保护业务系统免受安全威胁的措施或手段。广义的业务安全应包括业务运行的软硬件平台&#xff08;操作系统、数据库&#xff0c;中间件等&#xff09;、业务系统自身&#xff08;软件或设备&#xff09;、业务…

HCIP之LSP静态搭建实验

目录 HCIP之LSP静态搭建实验 实验图 基本配置 R1 R2 R3 R4 配置方法 搭建从1.0 - 4.0 网段的LSP 搭建静态路由 配置MPLS 配置LSR - ID 激活MPLS 全局激活 接口激活 搭建静态LSP 搭建入站LSR R1配置 搭建中转LSR R2配置 R3配置 搭建出站LSR R4配置 搭建从…

Java语言-----泛型的认识

目录 一.什么是泛型 二.泛型类的使用 2.1泛型类的定义 2.2泛型类的数组使用 三.泛型的上界 四.泛型的方法 五.泛型与集合 &#x1f63d;个人主页&#xff1a; tq02的博客_CSDN博客-C语言,Java领域博主 &#x1f308;梦的目标&#xff1a;努力学习&#xff0c;向Java进发…

八大数据库全面对比,让你明确数据库怎么去选!

随着互联网和大数据时代的到来&#xff0c;各种数据管理技术也在迅猛发展。而在数据管理技术中&#xff0c;数据库无疑是最重要的一环。现今市场上涌现出了众多数据库产品&#xff0c;不同的数据库产品针对不同的业务需求和应用场景&#xff0c;有着不同的特点和优势。本文将介…

【双碳系列】LEAP碳排放预测、LCA生命周期、GAMS电力、CGE一般均衡模型

本文围绕双碳专题分为五大内容&#xff0c;分别为&#xff1a; 基于LEAP模型的能源环境发展、碳排放建模预测及不确定性分析实践应用 (qq.com) 双碳目标下农田温室气体排放模拟实践技术应用 (qq.com) 环境影响与碳排放生命周期评估应用及案例分析 (qq.com) “双碳”目标下资…

如何实现一个可靠的 UDP

QUIC是如何实现可靠传输的&#xff1f; 市面上的基于UDP协议实现的可靠传输协议的成熟方案&#xff0c;应用在HTTP/3上。 UDP报文头部和TCP报文头部夹着三层头部 Packet Header Packet Header细分这两种&#xff1a; Long Packet Header 用于首次建立连接Short Packet Hea…

深元ai智慧工地视频分析盒子提高建筑施工现场安全效率

随着社会的快速发展&#xff0c;建筑行业安全问题日益受到重视。为了解决传统人工巡查的诸多问题&#xff0c;AI智慧工地视频分析盒子应运而生&#xff0c;通过人工智能技术&#xff0c;全面提高建筑施工现场的安全工作效率。 一、AI智慧工地视频分析盒子解决传统巡查的痛点 …

【产品设计】Android 和 IOS 的交互设计对垒

在手机操作系统百花齐放的年代&#xff0c;也是产品经理最头疼的年代&#xff0c;因为需要根据不同的操作系统做出不同的设计。而如今&#xff0c;手机操作系统基本只剩下安卓和IOS两大阵营&#xff0c;只需处理好安卓和IOS交互上的差异部分就可以做好产品设计了。 手机操作系统…