java中class和class有啥区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中class和class有啥区别相关的知识,希望对你有一定的参考价值。

class 是java的关键字, 在声明java类时使用;
Class 是java JDK提供的一个类,完整路径为 java.lang.Class;

区别是指两个或两个以上的事物间的不同,当两种相似的事物作比较时,它们的不同点便是区别。
那么 class和Class的相似性就只有一个,那都是单词"class",就是一个为首字母大写,一个为小写.

class和Class的作用:
1. class只用于类声明;
2. Class则用于抽象类的相关信息. java是面向对象的, 一般是把一些事物抽象成一个类,比如将学生信息抽象成Student这个类;Student类会抽象学生的姓名/性别/生日等信息;
那么java中也就把java中的类也抽象成了一个类叫Class;Class中抽象了类的包名/类名/属性数组/方法数组等;
参考技术A .java文件你可以认为只是一个文本文件, 这个文件即是用java语言写成的程序,或者说任务的代码块。
.class文件本质上是一种二进制文件, 它一般是由.java文件通过 javac这个命令(jdk本身提供的工具)生成的一个文件, 而这个文件可以由jvm(java虚拟机)装载(类装载),然后进java解释执行, 这也就是运行你的程序。

你也可以这样比较一下:
.java与 .c , .cpp, .asm等等文件,本质 上一样的, 只是用一种 语言来描述你要怎么去完成一件事(一个任务), 而这种语言 计算机本身 是没有办法知道是什么含义的, 它面向的只是程序员本身, 程序员可以通过 语言本身(语法) 来描述或组织这个任务,这也就 是所谓的编程。 最后你当然是需要计算机按照你的意图来运行你的程序, 这时候就先得有一个翻译(编译, 汇编, 链接等等复杂的过程)把它变成机器可理解的指令(这就是大家说的机器语言,机器语言本身也是一种编程语言,只是程序很难写,很难读懂,基本上没有办法维护)。 这里的.class文件在计算的体系结构中本质上对应的是一种机器语言(而这里的机器叫作JVM),所以JVM本身是可以直接运行这里的.class文件。所以 你可以进一步地认为,.java与.class与其它的编程语法一样,它们都是程序员用来描述自己的任务的一种语言,只是它们面向的对象不一样,而计算机本身只能识别它自已定义的那些指令什么的(再次强调,这里的计算机本身没有那么严格的定义)

C ++中的类a()和类a = class()有啥区别?

【中文标题】C ++中的类a()和类a = class()有啥区别?【英文标题】:What is the difference between class a() and class a = class() in C++?C ++中的类a()和类a = class()有什么区别? 【发布时间】:2018-01-15 03:46:45 【问题描述】:

来自 Java 和 C# 世界,我一直喜欢使用

someclass a = someclass();

而不是

someclass a();

在 C++ 中初始化一个类变量。但是,我的编译器有时会抱怨

Error C2280: Attempting to reference a deleted function

它们之间有什么区别吗?哪个更好?

【问题讨论】:

差别很大。你可以从What does X f(); mean?开始 不是反对者,但我想缺乏minimal reproducible example 并且缺乏研究通常会获得反对票。 【参考方案1】:

它们之间有什么区别吗?

一个大的:someclass a(); is declaring a function!

someclass a = someclass();,在C++17's copy ellision 之前,要求类是可移动的,这可能不是这里的情况,因为您收到错误Attempting to reference a deleted function

哪个更好?

没有。改为使用:

someclass a;

someclass a; // C++11

两者都会调用default constructor。

【讨论】:

具有需要参数的构造函数的类怎么样?除了您提到的缺点之外, someclass a(param) 和 someclass a = someclass(param) 是否相同? @AmazingJustus someclass a() 被视为函数声明的特殊情况主要适用于没有任何参数的情况。但是你可以找到一些带有参数的情况,例如someclass a(someother()),这也会导致函数声明。 这些将通过使用花括号或添加额外的括号来更正:someclass a( (someother()) ) someclass a(param)someclass a = someclass(param),首选第一个。【参考方案2】:

Dear Friend in C++ 用户创建对象如下

类名对象名;

#include<iostream>
using namespace std;

class demo

   public:
      void print()
         
           cout<<"Demo class";
         
 ;
int main()
   

      demo d;
      d.print();
      return 0;
   

输出 演示类

使用指针对象

#include<iostream>
using namespace std;
class demo

   public:
      void print()
         
           cout<<"Demo class using pointer object";
         
 ;

int main()
   

      demo *d = new demo();
      d->print();
      return 0;
   

输出 使用指针对象的演示类

在java中,垃圾收集是自动完成的。我希望你理解概念。

【讨论】:

建议:为了击败您的结束语,您应该将delete d; 添加到最后的main。更正:void main() 在 C++ 中无效。 C++ 标准要求main 返回int。一个小问题:你可以在整个编程生涯中看到除了堆栈和堆之外的任何东西,但是 C++ 不需要堆栈和堆。堆栈和堆只是自动和动态存储的最常见(迄今为止)实现。 void main() 将在 turboc 中工作。它不是无效的语句。在 gcc 编译器中,必须指定为 int。在我的第三点中,我指定必须使用删除运算符来释放内存。我在答案中附上了 turbo c 编译器屏幕截图 @K.Vani 说某些编译器编译某些东西并不意味着它是有效的 C++ 代码。编译器有错误,而旧的编译器(如 turboc)往往有很多错误。 @K.Vani TurboC++ 在 1998 年 C++ 标准化之前来来去去。它是一种不同的语言。了解一个,您可以像使用 C 和 C++ 一样混淆另一个,但是有许多差异会让您感到困惑。这是其中之一。

以上是关于java中class和class有啥区别的主要内容,如果未能解决你的问题,请参考以下文章

java中的 class<T>和 class<?>类型 有啥区别,可以互相转换来用吗?是好举例来说明一下

C ++中的类a()和类a = class()有啥区别?

CSS class 和id有啥区别?

ng-class 和 ng-style 有啥区别?

c++template中typename 和class有啥区别?

html中,id,name,class之间的有啥区别?