java概念,Java基础概念

1. Java编译程序将Java源程序翻译成JVM可执行代码-Java字节码。这一过程同C/C++不同。

当C编译器翻译成一个对象代码时,该代码是为在某一特定硬件平台运行而产生的。

因此,在编译过程中,编译程序通过查表将所有符合引用转换为特定的内存偏移量。

而Java编译器却不将对变量和方法的引用编译为数值引用,也不确定程序执行过程中的内存布局,

而是将这些符号引用信息保留在字节码中,由解释器在运行过程中创建内存布局,再通过查表确定一个方法

所在的地址。保证Java可移植性和安全性。

2. Java字节码执行有两种方式:

(1):即使编译方式。解释器先将字节码编译成机器码,再执行该机器码。

(2):解释执行方式。解释器通过每次解释并执行一小段代码完成Java字节码

程序所有操作。

通常采用第二种方法。

4e7ee272086956b08656e13eecefb499.png

3.  Java语音中,除了new语句外没有其他地方为一个对象申请和释放内存。

对内存进行释放和回收工作是有Java运行系统承担的。

4.  Java程序中一句连续字符串不能分开在两行中写,如果字符串超长,可以用

加号(+)连接。

5.  /*..*/中可以嵌套// 注释,但不能嵌套 /*..*/。

6. Java中的包、类、方法、参数和变量的名字,可由任意顺序的大小写字母,数字,下划线(_)和美元符号($)组成,不能以数字开头,不能是Java中保留关键字。

7. 整形常量可以分为十进制、十六进制和八进制。

十进制第一位不能是0,除数字0。

十六进制以0x或0X开头。

八进制必须以0开头。

长整形以L结尾。

8. 浮点型常量有float(32位),double(64位)两种类型。为单精度和双精度浮点数。

以后面加上F(f),或者D(d)表示。

9. 不同于C,Java的基础数据类型在任何操作系统中都具有相同的大小和属性。

30aa4273f6908f9df3332747fb683d00.png

10. char类型用来存储诸如字母、数字、标点符号及其他符号的单一字符。与C语言不同,Java的字符占两个字节,是Unicode编码的。

11. 函数的重载就是在同一个类中允许同时存在一个以上的同名函数,只有它们的参数个数或者类型不同即可。

12. Java把内存划分为两种:一种是栈内存,一种是堆内存。

在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配,当一段代码块(也就是花括号{}之间)定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放该变量所分配的内存。

堆内存用来存放由new创建的对象和数组,在堆中分配内存,由Java虚拟机的自动垃圾回收期管理。

引用变量是普通变量,定义是在栈中分配,引用变量在程序运行到作用域外后被释放,而数组和对象本身在堆中分配,即使程序运行到使用new产生的数组和对象所在的代码块之外,也不会立即释放内存,数组和对象在没有引用变量指向它时,才会变成垃圾,不能再被使用,在随后一个不确定的时间被垃圾回收器释放。这也是Java比较占内存的原因。

13. 声明数组时,无论用何种方式定义数组,都不能指定其长度

例如, int a[5]; //编译出错

Int a [] = new int [] {3,4,5} // 成功

14. 要创建新对象,需要使用new关键字和想要创建对象的类名,如:

Person p = new Person ();

等号左边以类名Person作为变量类型定义了一个变量p,来指向等号右边通过new关键字创建的一个Person类的实例对象,变量p就是对象的引用句柄,对象的引用句柄在栈中分配一个变量,对象本身是在堆中分配的。

15. “==”操作符用来比较两个变量是否相等,equals()方法用于比较两个对象内容是否一致。

16. Java中提供了System.gc()方法,使用这个方法可以强制启动垃圾回收器来回收垃圾。

17. 在变量前加static关键字,称为静态成员变量。我们可以直接使用类名来访问这个静态变量。静态变量在某种程度上类似其他语言的全局变量,如果不是私有的就可以在类的外部进行访问,此时不需要产生类的实例对象,只需要类名就可以引用。

18. 不能把方法内的变量声明为静态。

19. 在方法前加上static关键字,可以调用这个方法而不必创建对象。也就是不必将方法和对象绑在一起。

20. 在静态方法里只能直接调用同类的其他的静态的成员(包括变量和方法),而不能直接访问类中的非静态成员。这是因为,对于非静态的方法和变量,需要先创建类的实例对象后才可以使用,而静态方法使用前不用创建任何对象。

21. 静态方法不能以任何方式引用this和super关键字。因为静态方法在使用前不用创建任何实例对象,当静态方法被调用时,this对象根本没有产生。

22. main()方法是静态的,因此jvm在执行main方法时不创建main方法所在的类的实例对象。

23. 嵌套类可以直接访问嵌套它的类的成员,包括private成员,但是,嵌套类的成员却不能被嵌套它的类直接访问。

24. 和外部类不同的是,内部类可以声明为private或protected。

25. 内部类也可以通过创建对象从外部类之外被调用,只要将内部类声明为public即可。

26. 通过继承可以简化类的定义。Java只支持单继承。不允许多重继承。

27. 子类继承父类的所有成员变量和成员方法,但不继承父类的构造方法。在子类的构造方法里可以用super调用父类的构造方法。如果子类的构造方法中没有显式地调用父类构造方法,也没用使用this关键字调用重载其他构造方法,则在产生子类的实例对象时,写不写super();效果都是一样的。

28. 在Java中声明类、属性和方法时,可使用关键字final来修饰。final标记的类不能被继承。

final标记的方法不能被子类重写。final标记的变量(成员变量或局部变量)即成为常量,只能赋值一次。

29. Java中可以定义一些不含方法体的方法,它的方法体实现交给该类的子类根据自己的情况实现,这样的方法就是抽象方法,包含抽象方法的类就是抽象类。一个抽象类中可以有一个或多个抽象方法。抽象方法必须用abstract定义,任何带有抽象方法的类必须声明为抽象类。

30. 抽象类不能被实例化,也就是不能用new关键字去产生对象。

31. 抽象类只需声明,而不需实现。

32. 含有抽象方法的类肯定是抽象类,抽象类中的方法不一定都是抽象的。

33. 接口是特殊的抽象类,这种抽象类只包含常量和方法的定义,而没有变量和方法的实现。

34. 可以定义一个新的接口,用extends关键字去继承一个已有的接口。也可以定义一个类,用implements关键字去实现一个接口中所有的方法。也可以定义一个抽象类,用implements关键字去实现一个接口定义中的部分方法。

35. 实现一个接口就是实现该接口中所有的方法(除抽象类)。

36. 接口中的方法都是抽象的,多个无关的类可以实现同一个接口,一个类也可以实现多个无关的接口。

37. 可以用instanceof判断是否一个类实现了某个接口,也可以用来判断一个实例对象是否属于一个类。If(a instanceof b);

38. Java中所有的类都是从Object衍生出来的,所有Object方法使用于所有的类。

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

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

相关文章

【Excle】如何隐藏数据透视表中的错误值

如下:数据透视表出现错误怎么解决呢步骤方法①单击数据透视表任意单元格→数据透视表工具→分析→选项→勾选“对于错误值显示”→确定方法②右键→数据透视表选项(同样可以修改)转载于:https://www.cnblogs.com/OliverQin/p/8043469.html

vue怎么让接口带上cookie_在Vue中怎么使用cookie 之 vue-cookies

cookie 在工作中比较常用, 可以自行封装一些 添加/删除/获取cookie的方法, 可参考这个在Vue中有个很好用的插件 vue-cookiesgithub地址:https://github.com/cmp-cc/vue-cookies我们具体来看下怎么使用这个插件的使用第一步:安装vue-cookienpm install vu…

php 微信分享链接怎么弄,PHP实现 微信--分享朋友链接

不是些高深知识,但是第一次做,确实费了很多的时间.终于一点一点的扣了出来. 目前已经使用中.解决这个问题,总共碰到了几次BUG,1是生成的签名不对,自己打印出来,在去微信的签名算法页面一一核对.这时候如果对了,还是不成功.那就是需要动态获取URL链接的.最后需要将 函数写在为微…

MySQL中整型和字符串类型指定长度的含义

引入: int(5)和char(5)或者varchar(5)中的数字指的是什么意思?是字节数,还是字符长度?为什么在整型中指定了int(5)却可以输入123456? 答案是后者,不管是整型还是字符串类型,后面跟的数字都是字符…

php网站开发项目实战,PHP动态网站开发项目实战

任务1 分析网站需求11.1 知识准备11.1.1 功能结构图11.1.2 用例图21.2 任务实现51.2.1 花公子蜂蜜网站项目功能结构分析51.2.2 花公子蜂蜜网站项目用例分析61.3 经验传递71.4 知识拓展8任务2 设计网站前台版面92.1 知识准备92.1.1 网站版面设计流程92.1.2 网站版面设计原则102.…

repo同步代码_工欲善其事,必先利其器:repo 介绍

介绍此repo非彼repo。这里的repo,是指谷歌公司的一款小工具,名字就叫repo(我承认,这不是一个好名字,Google里面怎么搜都搜不到它的真身)。解决的问题有时候,我们需要在一台电脑上克隆很多个代码仓库,编译它…

洛谷 P1754 球迷购票问题

P1754 球迷购票问题 题目背景 盛况空前的足球赛即将举行。球赛门票售票处排起了球迷购票长龙。 按售票处规定,每位购票者限购一张门票,且每张票售价为50元。在排成长龙的球迷中有N个人手持面值50元的钱币,另有N个人手持面值100元的钱币。假设…

php date函数实现,PHP date() 函数可实现的功能列表

date() 函数格式化本地日期和时间,并返回已格式化的日期字符串。date(format,timestamp);format 参数为必填,格式为何种格式timestamp 可选参数。规定整数的 Unix 时间戳。默认是当前的本地时间(time())。format参数如下:d - 一个月中的第几天…

ddd 企业应用架构模式_灵魂拷问:用了DDD分包就是落地了领域驱动设计吗?谈谈DDD本质...

学习DDD的时候,作为开发,我们更关心它在技术层面的东西,尤其体现在DDD的分包方式、编码技巧等方面。自然的,我们不禁发问,用了DDD的分包,就是实践落地了DDD了么?不卖关子,直接说答案…

java常见编码

摘自:http://www.cnblogs.com/yaya-yaya/p/5768616.html红色 主要点  灰色 内容 绿色 知识点 橘色 补充内容几种常见的编码格式 为什么要编码 不知道大家有没有想过一个问题,那就是为什么要编码?我们能不能不编码?要…

准确率 召回率_机器学习中F值(F-Measure)、准确率(Precision)、召回率(Recall)

在机器学习、数据挖掘、推荐系统完成建模之后,需要对模型的效果做评价。业内目前常常采用的评价指标有准确率(Precision)、召回率(Recall)、F值(F-Measure)等,下图是不同机器学习算法的评价指标。下文讲对其中某些指标做简要介绍。本文针对二元分类器&am…

php 前置操作方法,前置操作-THINKPHP 5.0 手册最新版

前置操作可以为某个或者某些操作指定前置执行的操作方法,设置 beforeActionList属性可以指定某个方法为其他方法的前置操作,数组键名为需要调用的前置方法名,无值的话为当前控制器下所有方法的前置方法。[except > 方法名,方法名]表示这些…

Saving James Bond - Easy Version 原创 2017年11月23日 13:07:33

06-图2 Saving James Bond - Easy Version(25 分) This time let us consider the situation in the movie "Live and Let Die" in which James Bond, the worlds most famous spy, was captured by a group of drug dealers. He was sent to …

commit是直接提交到远程吗 svn_xcode 把项目代码提交到远程SVN服务器

环境 xcode 7 Mac airxcode默认支持GIT源码管理工具,但现在想把代码提交到已有到SVN服务器上,步骤如下:1,在safari中打开svn链接地址,信任证书,输入用户名密码 ,登陆成功,可以在浏览…

oracle导入 表 卡住了,oracle数据库怎么导入dmp,只导入数据不导入表结构?

使用方法:Exp parameter_namevalue or Exp parameter_name(value1,value2……)只要输入参数helpy就可以看到所有帮助.EXP常用选项1.FULL,这个用于导出整个数据库,在ROWSN一起使用时,可以导出整个数据库的结构。例如:ex…

【bzoj3991】[SDOI2015]寻宝游戏 树链的并+STL-set

题目描述 给出一棵树,初始每个点都是非必经的。多次改变某个点的必经状态,并询问从任意一个点出发,经过所有必经的点并回到该点的最小路程。 输入 第一行,两个整数N、M,其中M为宝物的变动次数。 接下来的N-1行&#xf…

vue 引入json地图_VUE中通过Echarts引入地图

渲染的方法如下 记得引入echartsimport echarts from echarts-----------------------------------init(dalian){this.$nextTick(()>{var myChart this.$echarts.init(document.getElementById(echartMap));echarts.registerMap(dalian, dalian,{});myChart.setOption({ser…

Django---admin

Django内置admin 1.配置路由 urlpatterns [url(r^admin/, admin.site.urls),] 2.定制admin 在admin.py中只需要讲Mode中的某个类注册,即可在Admin中实现增删改查的功能,如: admin.site.register(models.UserInfo) 但是,这种方式比…

vue 父组件获取接口值传到子组件_vue父组件异步获取数据传给子组件的方法

但是现在问题是父组件的数据是异步获取的,而子组件一开始就会渲染,如果此时没有传入数据,而子组件又要用到数据中的length属性时就会报错:怎么办呢?最简单的办法就是让子组件条件渲染,当有数据的时候才渲染…

python爬取数据需要注意的问题

1 爬取https的网站或是接口的时候,如果是不受信用的SSL证书,会报错,需要添加如下代码,如下代码可以保证当前代码块内所有的请求都自动屏蔽ssl证书问题: import ssl # 这个是爬取https的链接需要的,以及下…