热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

java中类似c(java和什么类似)

本文目录一览:1、JAVA中的类相当于C语言里的什么?

本文目录一览:


  • 1、JAVA中的类 相当于C语言里的 什么?


  • 2、JAVA中有没有类似C语言中sizeof那样的功能?


  • 3、请问java语言中有没有类似C语言里scanf的语句?


  • 4、java中有类似于c中的结构体一样的数据类型吗


  • 5、java中类似C中的scanf函数是什么,怎么用


  • 6、java中类似于C语言的goto无条件转向语句的语法是什么?

JAVA中的类 相当于C语言里的 什么?

C语言不是面向对象的,所以没有类这个概念,要说最相近的概念,是结构体

C++才有面向对象,同样也叫做类。

JAVA中有没有类似C语言中sizeof那样的功能?

Java没有提供任何类似于C语言的sizeof()的操作器。但是java中可以模拟C语言中对sizeof的实现。

实现的想法是这样的:java.lang.Runtime类中有一些简单的能涉及到内存管理的函数:

使用这些简单的内存访问,可以得到内存的一些情况,通过建立一个大的某个类的数组,来查看内存用了多少,进而可以求得类的大小。

程序代码示例:

public class Sizeof {

public static void main(String[] args) throws Exception {

//   Warm   up   all   classes/methods   we   will   use

runGC();

usedMemory();

//   Array   to   keep   strong   references   to   allocated   objects

final int count = 100000;

Object[] objects = new Object[count];

long heap1 = 0;

//   Allocate   count+1   objects,   discard   the   first   one

for (int i = -1; i count; ++i) {

Object object = null;

/*   Instantiate   your   data   here   and   assign   it   to   object*/

//object   =   new   Object   ();

//object   =   new   Integer   (i);          

//object   =   new   Long   (i);          

//object   =   new   String   ();

//object   =   new   Byte(   (byte)   0);  

//object   =   new   Float(   0.2f);

//object   =   new   Double(   0);

//object = new HelloWorld();

if (i = 0)

objects[i] = object;

else {

                     object = null; //   Discard   the   warm   up   object

runGC();

heap1 = usedMemory(); //   Take   a   before   heap   snapshot

}

}

runGC();

long heap2 = usedMemory(); //   Take   an   after   heap   snapshot:

final int size = (int) Math.round(((double) (heap2 - heap1)) / count);

System.out.println("'before'   heap:   " + heap1

+ ",   'after'   heap:   " + heap2);

System.out

.println("heap   delta:   " + (heap2 - heap1) + ",   {"

+ objects[0].getClass() + "}   size   =   " + size

+ "   bytes");

for (int i = 0; i count; ++i)

objects[i] = null;

objects = null;

}

private static void runGC() throws Exception {

//   It   helps   to   call   Runtime.gc()

//   using   several   method   calls:

for (int r = 0; r 4; ++r)

_runGC();

}

private static void _runGC() throws Exception {

long usedMem1 = usedMemory(), usedMem2 = Long.MAX_VALUE;

for (int i = 0; (usedMem1 usedMem2) (i 500); ++i) {

s_runtime.runFinalization();

              s_runtime.gc();

Thread.yield();

usedMem2 = usedMem1;

usedMem1 = usedMemory();

}

}

private static long usedMemory() {

return s_runtime.totalMemory() - s_runtime.freeMemory();

}

private static final Runtime s_runtime = Runtime.getRuntime();

} //   End   of   class

需要注意的是上面的一句:Object[] objects = new Object[count];

只是分配了数组空间,没有分配对象的空间。数组中只有引用而已。

结论:下代码测试基本对象时,得出的结果象下面:   

                  Object类对象  :           8字节   

                  Integer类对象 :           16字节   

                  Long类对象    :            16字节   

                  Byte类对象     :            16字节   

此示例说明了java中基本类型封装对象所占内存的大小。

1.简单的Object对象要占用8个字节的内存空间,因为每个实例都至少必须包含一些最基本操作,比如:wait()/notify(),equals(),   hashCode()等。

2.使用Integer对象占用了16个字节,而int占用4个字节,说了封装了之后内存消耗大了4倍。

3.Long看起来比Integer对象应该使用更多空间,结果Long所占的空间也是16个字节。

那么就正好说明了JVM的对于基本类型封装对象的内存分配的规则是如下:   

  a、Object所占内存(8个字节)+最大基本类型(long)所占内存(8个字节)   =   16字节。

  b、JVM强制使用8个字节作为边界。

  c、所以所有基本类型封装对象所占内存的大小都是16字节。但是还是有区别,比如:Integer对象虽然占用了16个字节的内存,但是只是利用了Object所占内存(8个字节)+int所占内存(4个字节)   =   12字节。还有4个字节根本没有被使用。

请问java语言中有没有类似C语言里scanf的语句?

当然有,

Scanner

in=new

Scanner(System.in);

while(in.hasNext())

{

String

str=in.nextLine();//这就可以得到一个字符串

}

具体去看看Scanner类就可以了

java中有类似于c中的结构体一样的数据类型吗

用class就可以了,其实C++里的struts已经是多余的了,只不过是一个全public的class,基本是为了兼容C才保留的。

java中类似C中的scanf函数是什么,怎么用

使用 Scanner 类,Scanner 被称为输入流扫描器类,从控制台读取数据的 构造方法 如下:

Scanner类在 java.util 包下,使用时要加

import java.util.Scanner;

Scanner input = new Scanner(System.in);

举例:

Scanner s = new Scanner(System.in);

//在控制台输入一个字符串,回车

String str = s.next();

s还有提供许多其它方法,可以参考jdk的api文档系统学习

java中类似于C语言的goto无条件转向语句的语法是什么?

Java不存在goto语句,但是已经用”类名.方法“的形式进行方法调用。

解释:goto语句作为java的保留字段,但是没有实际的应用的。goto语句实际上是C语言的范畴,用来定义指针跳转用的,java中通过”类名.方法“的形式进行的方法调用,不在用goto语句进行实现,这个是java的一大改进。

JAVA中实现goto语句功能 :

使用方法如下:

1 label0:

2 for (int k = 0; k 10; k++) {

3 ..........

4 label1:

5 for (int j = 0; j 10; j++) {

6 ................

7 break label0;

8 }

9 ...........

10 label2:

11 for (int kk = 0; kk 10; kk++) {

12 ..............

13 break label0;

14 }

15 }

16 System.out.println("here");

将需要跳转的到的循环开始处使用lablename:的方式标注(lablename是自定义标签名)

例如,第1行代码所示.在循环体内,可以使用break lablename;或者continue lablename跳转到该处第1行代码的地方,第7行代码执行后,将跳转到第1行代码处.

break 和continue的区别就是,break跳到lablename处后,接下来是执行该lablename所代表的循环之后的语句,例如第16行代码;而 continue则是将循环记数加1或者减1继续执行lablename所代表的循环,直到条件不满足或遇到return语句为止.

这样我们就可以在循环中任何位置跳转到父循环外去,无论嵌套多深.

注意:

1. lablename标签名和所代表的标签之前不能有任何其他的语句,例如第1行和第2行之间不能有其他的任何语句出现,否则编译不通过;

2.该跳转只能跳转到祖先级循环,同级循环之间不能跳转,例如第13行不能跳转到第4行

3.虽然该跳转在一定程度上方便了编程,不过最好尽量避免,因为它和goto一样在一定程度上破坏了结构化编程的特点。

更详细的例子可参考如下链接:


推荐阅读
  • Week04面向对象设计与继承学习总结及作业要求
    本文总结了Week04面向对象设计与继承的重要知识点,包括对象、类、封装性、静态属性、静态方法、重载、继承和多态等。同时,还介绍了私有构造函数在类外部无法被调用、static不能访问非静态属性以及该类实例可以共享类里的static属性等内容。此外,还提到了作业要求,包括讲述一个在网上商城购物或在班级博客进行学习的故事,并使用Markdown的加粗标记和语句块标记标注关键名词和动词。最后,还提到了参考资料中关于UML类图如何绘制的范例。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文介绍了GregorianCalendar类的基本信息,包括它是Calendar的子类,提供了世界上大多数国家使用的标准日历系统。默认情况下,它对应格里高利日历创立时的日期,但可以通过调用setGregorianChange()方法来更改起始日期。同时,文中还提到了GregorianCalendar类为每个日历字段使用的默认值。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • Java中包装类的设计原因以及操作方法
    本文主要介绍了Java中设计包装类的原因以及操作方法。在Java中,除了对象类型,还有八大基本类型,为了将基本类型转换成对象,Java引入了包装类。文章通过介绍包装类的定义和实现,解答了为什么需要包装类的问题,并提供了简单易用的操作方法。通过本文的学习,读者可以更好地理解和应用Java中的包装类。 ... [详细]
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
  • JDK源码学习之HashTable(附带面试题)的学习笔记
    本文介绍了JDK源码学习之HashTable(附带面试题)的学习笔记,包括HashTable的定义、数据类型、与HashMap的关系和区别。文章提供了干货,并附带了其他相关主题的学习笔记。 ... [详细]
  • 本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。 ... [详细]
  • Java 11相对于Java 8,OptaPlanner性能提升有多大?
    本文通过基准测试比较了Java 11和Java 8对OptaPlanner的性能提升。测试结果表明,在相同的硬件环境下,Java 11相对于Java 8在垃圾回收方面表现更好,从而提升了OptaPlanner的性能。 ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
author-avatar
btbxin
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有