Java与C++语法的区别
1. 注释可以在Java程序中起到文档标记的作用
类文档标记:
1)@version
2)@author
3)@param
4)@return
5)@exception
2. Java的字符占两个字节,是Unicode编码
3. 作用域——
Java不存在全局和局部作用域。
不重名:Java程序块不能将内部作用域声明的变量与其外部作用域声明的变量重名。
4. Java程序不可能在类外的全局区域有方法。
5. Java数组
定义:
int arr[ ] = new int[10];
与数组相关的方法:
1)复制数组
System.arrycopy(...);
2)数组排序
Array.sort(arrayname);
6. Java的类
1)new语句的类名后要有一对圆括号
Man p1 = new Man();
类名后的句柄 p1,相当于C++的指针,引用一个Man的对象
2)对象的比较
操作符==时
两个变量所指内存地址相等的时候,才能返回true
3)this引用句柄
构造方法中可以通过this调用另一个构造方法
{... this(...,...,...);}
7.垃圾回收机制
数组和对象分配在堆上
数组和对象在没有引用变量指向它时才会变成垃圾,不能再被使用,但仍然占据着内存,在随后一个不确定的时间被垃圾回收器释放掉,这也是Java占内存的原因。
8.static关键字
注意:不能把任何方法体内的变量声明为静态(只能把类的成员声明为静态成员)
1)静态代码块
class Code{
{
System.out.println("Code的构造块");
}
static{
System.out.println("Code的静态代码块");
}
public Code(){
System.out.println("Code的构造方法");
}
}
不包含在任何方法体中的,当类被载入时,自动执行静态代码块,且只被执行一次,经常用作初始化类中属性;
在Java中,一个类装入JVM中经过3个步骤:装载、链接和初始化。因此,静态代码块执行在构造函数之前。
2)main方法是静态的
这个main()方法的声明为:public static void main(String args[])。必须这么定义,这是Java的规范。
因此在main()方法中,不能直接访问该类中的非静态成员。
9.类的继承
Java的继承是单一继承关系,一个子类只能有一个父类
class A
{}
class B extends A
{}
class C extends B
子类构造的时候,需要在构造函数中super(参数)构造父类。在子类有方法或变量与父类有冲突时,可以用super. 来加以区别。
class Student extends Person{
public Student (String name, int age, String school) {
super(name,age);
this.school=school;
}
}
10.抽象类与接口
1)必须用abstract 关键字来修饰抽象类;抽象方法也必须用abstract来修饰。
含有抽象方法的类必须被声明为抽象类,抽象类的子类必须覆盖所有的抽象方法后才能被实例化,否则这个子类还是抽象类。
2)接口interface——Java对C++多重继承的改进
接口是抽象方法和常量值的定义集合;
接口可以看作一种特殊的抽象类,只包含常量和方法的定义,而没有变量和方法的实现;
接口里的变量默认使用public static final标识的,因此,接口中定义的变量就是全局静态常量;
用implements关键字去实现一个接口中的所有或部分方法;
11. 对象的多态
Java中所有类都继承自Object类,Object是Java类层中最高层类
Object类中的getClass()、notify()、notifyAll()、wait()等方法不能被重写,因为这些方法被定义为final类型。
多态:
- >多态的定义:指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。(发送消息就是函数调用)
- >实现多态的技术称为:动态绑定(dynamic binding),是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。
- >多态的作用:消除类型之间的耦合关系。
多态存在的三个必要条件
1>、要有继承;
2>、要有重写;
3>、父类引用指向子类对象。
12. 包
package语句:Java中采用了“.”来分隔目录
package name1.subname2; public class classname
{}
类会被打包进对应路径下的 classname.class文件
import语句
使用某个包里的类
import java.util.*;
13.Java类的访问控制
1)类只有两种访问控制:public和默认。默认修饰即class关键字前没有访问控制符的类,只能被同一包中的所有类访问。
2)带有public修饰符的类的类名必须与源文件名相同。只要在class之前,没有使用public修饰符,源文件的名称就可以是任意的。
jar文件包:某个java应用所需的class文件和其他文件的压缩包,习惯上称jar包。
14. final关键字
final关键字的含义?
final在Java中是一个保留的关键字,可以声明成员变量、方法、类以及本地变量。一旦你将引用声明作final,你将不能改变这个引用了,编译器会检查代码,如果你试图将变量再次初始化的话,编译器会报编译错误。
什么是final变量?
凡是对成员变量或者本地变量(在方法中的或者代码块中的变量称为本地变量)声明为final的都叫作final变量。final变量经常和static关键字一起使用,作为常量。下面是final变量的例子:
|
1
2
|
public static final String LOAN = "loan";LOAN = new String("loan") //invalid compilation error |
final变量是只读的。
什么是final方法?
final也可以声明方法。方法前面加上final关键字,代表这个方法不可以被子类的方法重写。如果你认为一个方法的功能已经足够完整了,子类中不需要改变的话,你可以声明此方法为final。final方法比非final方法要快,因为在编译的时候已经静态绑定了,不需要在运行时再动态绑定。下面是final方法的例子:
|
1
2
3
4
5
6
7
8
9
10
11
12
|
class PersonalLoan{ public final String getName(){ return "personal loan"; }}class CheapPersonalLoan extends PersonalLoan{ @Override public final String getName(){ return "cheap personal loan"; //compilation error: overridden method is final }} |
什么是final类?
使用final来修饰的类叫作final类。final类通常功能是完整的,它们不能被继承。Java中有许多类是final的,譬如String, Interger以及其他包装类。下面是final类的实例:
|
1
2
3
4
5
6
7
|
final class PersonalLoan{ } class CheapPersonalLoan extends PersonalLoan{ //compilation error: cannot inherit from final class} |
final关键字的好处
下面总结了一些使用final关键字的好处
- final关键字提高了性能。JVM和Java应用都会缓存final变量。
- final变量可以安全的在多线程环境下进行共享,而不需要额外的同步开销。
- 使用final关键字,JVM会对方法、变量及类进行优化。
不可变类
创建不可变类要使用final关键字。不可变类是指它的对象一旦被创建了就不能被更改了。String是不可变类的代表。不可变类有很多好处,譬如它们的对象是只读的,可以在多线程环境下安全的共享,不用额外的同步开销等等。
15.Java API
System与Runtime类
Java与C++语法的区别的更多相关文章
- php与java语法的区别
php与java语法的区别 个人觉得在学习语言时,可以通过比较来进行学习.由于长时间写java代码,对java的基本语法还算熟悉,现在转学php,就php中基本语法与java基本语法差异进行比较. 1 ...
- 二、JAVA基础、语法
第二节:JAVA基础.语法 1.修饰符.变量: Java中主要有如下几种类型的变量 局部变量 ...
- 7#Java基本语句语法
Java基本语句语法https://github.com/DuGuQiuBai/Java/blob/master/day03/day03%E6%80%BB%E7%BB%93.txt 1:位运算符(了解 ...
- JSON语法与JavaScript语法的区别
JSON是独立于语言存在的,在不同的编程语言中对这种数据类型的实现不同,例如在JavaScript中使用JavaScript对象对这种数据格式进行实现,那么在java中当然是用java对象实现. 描述 ...
- 第十八节:详解Java抽象类和接口的区别
前言 对于面向对象编程来说,抽象是它的特征之一. 在Java中,实现抽象的机制分两种,一为抽象类,二为接口. 抽象类为abstract class,接口为Interface. 今天来学习一下Java中 ...
- Java抽象类和接口的区别(好长时间没看这种文章了)
Java抽象类和接口的区别(好长时间没看这种文章了) abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的 ...
- Java-杂项: Java中Array和ArrayList区别
ylbtech-Java-杂项: Java中Array和ArrayList区别 1.返回顶部 1. 1)精辟阐述:可以将 ArrayList想象成一种“会自动扩增容量的Array”. 2)Array( ...
- [转帖]java注解与注释注解区别
https://baijiahao.baidu.com/s?id=1615942718081024481&wfr=spider&for=pc 还需要仔细看一下书的 书里面都有. jav ...
- 动静结合?Ruby 和 Java 的基础语法比较(入门篇)
前言 这篇文章示例代码比较多, Java 程序员可以看到一些 Ruby 相关语法和使用,Ruby 程序员可以看看 Java 的基本语法和使用方法,本文比较长,将近万字左右,预计需要十几分钟,如果有耐心 ...
随机推荐
- Linux rm的一次误用
今天在Linux下误用了一次rm -rf,经历惨痛,记录一下. 原因是我删除了一个文件到回收站,然后点错了将home下的所有东西都删到了回收站,然后我又从回收站拷贝回home目录而不是使用恢复,因为h ...
- bug生命周期和bug状态处理
首先,测试人员发现 BUG ,做好记录并上报至 BUG 数据库.接着,开发组长或经理确定该 BUG 是否有效 之后指定 BUG 的优先级并安排给相关开发人员.否则拒绝该 BUG 的修复. 然后,该 B ...
- Magento邮件发送完美设置
Magento新站上线伊始,不料在邮件上遇到了问题.此时常用的邮件模板已经编辑完毕,诸如New Account, New Order, Password Forget等. CentOS下发送邮件很简单 ...
- magento的布局文件之谜
magento的布局文件layout.xml文件详解 解析顺序 布局xml文件一般位于app/design/{area}/{package}/{theme}/layout/目录下.Layout文件一般 ...
- css怎么让li水平排列和div居中
让li向左浮动即可 给div定一个宽度,然后margin:0 auto;即可:
- OVSSL企业证书认证
最近,在做http->https的转化,虽然我没有操作证书的安装过程,但是在这个过程中学习到不少知识呢. 因为我没有操作,所以操作上我就不知道了.下面是这个过程中要注意的一些事项: 1.公司名称 ...
- CTF-练习平台-Social之 密码?
一.密码? 看到题目提示是“张三”“生日”,再联系到我们设置密码时一般是名字的拼音首字母加生日,所以猜测是:zs19970315尝试后正确.
- 字符串的比较【string和字符数组】
无论是string 还是 字符数组的字符串比较函数,返回的都是字典序的大小.如 1234 和 5 比较时就是1234的字典序小于5,要想比较字符串表示的数字的大小,需要自己写函数比较
- EasyPHP-Devserver-17的坑位
mysql登陆错误:error: 'Plugin '*2A8AF30E682613A2F1CE1E28BA11D8560B294DCE' is not loaded' http://stackover ...
- spring boot中,jar包、war包的区别
jar包.war包 比较(表格) 项目 jar包 war包 在开发调试完成之后,可以将应用打成JAR包的形式,可以直接使用Maven插件的package命令,最终会形成一个可运行的 JAR包.我们使用 ...