Java中有没有像C++中那种包含一个栈的头文件< stack >就可以用栈的一些出栈入栈的函数的做法?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中有没有像C++中那种包含一个栈的头文件< stack >就可以用栈的一些出栈入栈的函数的做法?相关的知识,希望对你有一定的参考价值。
有啊Java 中的 Import 就相当于C++中的 include 了
但是仅仅是相当于,并不等价的。
想要使用栈(Stack),你可以使用
import java.util.Stack;
然后
Stack stack = new Stack();
stack.push(一个元素);
stack.pop();
就这样了。 参考技术A 我是学习VC的,java接触了一点,java不是都通过import 找包么???你可以找一下java的参考文档,这个类似VC中的#include,
C++库的头文件到底如何包含的?
今天在讲课当中遇到了一个有趣的问题。学生问我,为什么在代码中没有书写#include <string>,也可以直接使用string类?其实这个问题是比较复杂的,最终的答案和编译器有关。
前文回顾:
- 正式开始 -
▼
-01-
头文件的意义
基本上我们写C/C++程序的第一行都是头文件包含。以前学习C语言的时候,第一句总是#include <stdio.h>,而C++的第一句通常是#include <iostream>。
然后我们在学习过程中会需要使用各种各样的库函数,这时就需要记住对应的头文件的名字。比如初学者通常需要使用<cmath>、<ctime>、<cstring>、<cstdlib>、<string>等,而学习使用STL时,又需要使用<vector>、<stack>、<queue>等库文件。
一般说来,头文件当中主要包含了相关的函数声明,我们可以在cplusplus.com查询到这些库当中各种函数的用法。
但有时我们会发现,没有写对应的头文件,居然也能运行?这又是为什么呢?
-02-
头文件的间接包含
其实我们只要包含了一个头文件,往往会间接包含到其它的头文件,但具体如何包含取决于编译器的库实现。
例如微软的VS系列,和之前我们介绍的GCC就各不相同,而在苹果的MacOS系统中通常安装的编译器前端是Clang,它和标准GCC也是不完全一样的。
关于这三种编译器的区别,以后给大家再单独介绍。
以我现在的苹果系统为例,C++的库安装在如下目录中:
/Library/Developer/CommandLineTools/usr/include/c++/v1
打开目录当中的iostream,我们看到了如图1的内容。
这里的LLVM是和Clang配套的编译器后端,同时我们看到了其授权协议里面提到了伊利诺伊大学,这是因为LLVM的作者就是出自该大学的大神克里斯·拉特纳。关于LLVM和大神本人,我们以后再单独进行介绍。
▼ 图1 iostream截图 ▼
在该文件第20行,有 #include <ostream>;
在ostream的第142行,有 #include <bitset>;
在bitset的第120行,有 #include <string>。
至此真相终于大白,我们明白了为什么可以不写#include <string>了。
-03-
正确的应对方法
之前提过,不同的编译器其库的组织是不完全相同的,也许在某处可以通过的代码换一个环境就不可以了。因此,出于稳妥起见仍然建议大家明确写出对应的头文件。
毕竟这样提高了程序的稳定性和兼容性,是值得的。
以上是关于Java中有没有像C++中那种包含一个栈的头文件< stack >就可以用栈的一些出栈入栈的函数的做法?的主要内容,如果未能解决你的问题,请参考以下文章