初步java学习的几个问题

本文探讨了Java语言相对于C语言的优势,如其面向对象特性、跨平台能力(通过JVM实现)、内存管理(自动垃圾回收)以及JDK、JRE和JVM的关系。还介绍了面向对象编程的概念和Java的逻辑运算符特点。
摘要由CSDN通过智能技术生成

在学习Java之后,我们可以发现,java的语法本身与c语言并无太大的差异,为什么会这么好用?

(向java,低头!)orz

Java 的设计初衷之一就是为了让 C/C++ 程序员更容易地过渡到面向对象编程和跨平台开发。虽然 Java 和 C 语言在语法上有相似之处,但 Java 在很多方面都做了改进和增强,使其更易用、更安全、更具效率,这也是很多人觉得 Java 很好用的原因之一。

Java语言的主要特性包括:

1.跨平台:Java编写的程序经过编译后会生成字节码,这种字节码可以在任何安装了Java虚拟机(JVM)的设备上运行,无论设备的操作系统是什么,这就是所谓的“一次编译,到处运行”。


2.面向对象:Java是一种面向对象的编程语言,它的所有元素都是对象,每个对象都有自己的属性和方法。


3.简单易学:Java的语法基于C++,同时去掉了一些复杂且很少使用的特性,例如显式指针,运算符重载等,使得Java更加简单易学。


4.安全性:Java具有自动垃圾回收机制,能够有效防止内存泄露等问题,因此Java被广泛应用于各种需要高度安全性的场合。


5.健壮性:Java没有指针,减少了内存出错的可能性,同时Java还有完善的异常管理机制,增强了程序的健壮性。


6.多线程:Java提供了强大的多线程机制,能够更好地利用多核CPU,提高程序的性能。


7.分布式:Java有强大的基于网络的类库,非常适合开发分布式系统。


8.动态性:Java支持动态加载类,这意味着类是按需加载的,同时也支持其本地语言(即C和C++)中的函数。

内存管理

在Java中:

基本不用考虑内存的问题,如果想用一个对象,new一个就可以,这个过程的背后则是JRE为对象分类的一定内存,当JRE发现你不再使用这个对象的时候,他就会自动回收内存,也就是说你只管借东西,不用管归还,因为与有人当你的跟班,在你不使用的时候就把东西归还了,不过这个过程还是有的,只不过是JRE做的而已。

但是C:

如果你想用,你可以用malloc之类的方法申请内存,当你使用完了,因为没有跟班的,你需要自己把这块内存归还回去,也就是调用free方法来完成这个任务。由于需要显式的归还内存,因此当一个函数需要将一块内存返回给调用者的时候,问题就比较复杂了,不如面向对象和具有内存回收功能的Java那么直观了。

跨平台原理

计算机程序设计语言通常分为机器语言、汇编语言和高级语言三类。高级语言需要翻译成机器语言才能执行,而翻译的方式分为两种,一种是编译,另一种是解释。

我们想要生成一个程序,首先要先编写代码,然后编译成为机器语言,再之后才能运行。

c语言是直接将我们的代码编译成机器码。

而java则是先将代码编译为字节码,在运行时再进行解释,而这个解释也是,在执行是一行一行,解释一行,执行一行。(现在已经是混合使用编译执行和解释执行)

这也是java能够跨平台执行的原因,首先先编为字节码,然后在虚拟机上,来根据不同平台解释为机器码,然后再执行程序。

因为java本身在虚拟机上运行,所以Java没有办法来写破坏操作系统的代码,虚拟机本身是已经被固定的,不同平台有不同的jvm,来实现java的跨平台。

什么是面向对象? 面向对象和面向过程的区别是什么


面向对象是一种基于面向过程的编程思想,是向现实世界模型的自然延伸,这是一种"万物皆对象"的编程思想。由执行者变为指挥者,在现实生活中的任何物体都可以归为一类事物,而每一个个体都是一类事物的实例。面向对象的编程是以对象为中心,以消息为驱动。
区别:


(1)编程思路不同: 面向过程以实现功能的函数开发为主,而面向对象要首先抽象出类、属性及其方法,然后通过实例化类、执行方法来完成功能。


(2)封装性: 都具有封装性,但是面向过程是封装的是功能,而面向对象封装的是数据和功能。


(3)面向对象具有继承性和多态性,而面向过程没有继承性和多态性,所以面向对象优势很明显


面向对象的三大特性

(1)封装: 通常认为封装是把数据和操作数据的方法封装起来,对数据的访问只能通过已定义的接口。

(2)继承:继承是从已有类得到继承信息创建新类的过程。提供继承信息的类被称为父类(超类/基类),得到继承信息的被称为子类派生类)。

(3)多态: 分为编译时多态(方法重载)和运行时多态(方法重写)。

要实现多态需要做两件事:

一是子类继承父类并重写父类中的方法

二是用父类型引用子类型对象,这样同样的引用调用同样的方法就会根据子类对象的不同而表现出不同的行为。

几点补充:
(1)子类拥有父类对象所有的属性和方法(包括私有属性和私有方法),但是父类中的私有属性和方法子类是无法访问,只是拥有。因为在一个子类被创建的时候,首先会在内存中创建一个父类对象,然后在父类对象外部放上于类独有的属性,两者合起来形成一个子类的对象;

(2)子类可以拥有自己属性和方法;

(3)子类可以用自己的方式实现父类的方法。 (重写)


JDK、JRE、JVM 三者之间的关系

1.JDK (ava Development Kit) : 是Java 开发工具包,是整个Java 的核心,包括了Java 运行环境]RE、Java 工具和Java 基础类库。


2.JRE (Java Runtime Environment) : 是Java 的运行环境,包含JVM 标准实现及Java 核心类库


3.JVM (ava VirtualMachine) : 是Java 虚拟机,是整个Java 实现跨平台的最核心的部分,能够运行以Java 语言写作的软件程序。所有的Java 程序会首先被编译为 .class 的类文件,这种类文件可以在虚拟机上执行。

&与&&

Java && & 都是表示与的逻辑运算符,都表示逻辑运输符 and ,当两边的表达式都为 true 的时候,整个运算 结果才为 true ,否则为 false
&& :有短路功能,当第⼀个表达式的值为 false 的时候,则不再计算第⼆个表达式;
& :不管第⼀个表达式结果是否为 true ,第⼆个都会执⾏。
除此之外, & 还可以⽤作位运算符:当 & 两边的表达式 不是 Boolean 类型的时候, & 表示按位操作。

 

  • 8
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值