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 的基本语法和使用方法,本文比较长,将近万字左右,预计需要十几分钟,如果有耐心 ...
随机推荐
- jquery日期和时间的插件精确到秒
首先.html5提供了input的time类型,使我们可以通过input框输入日期,但是如果我们的需求是这个时间需要明确到几时几分几秒的,那html5就没有办法满足我们的需求了,就需要使用jQuery ...
- string用scanf读入(节省时间)
#include <iostream> #include <stdio.h> #include <string.h> using namespace std; in ...
- Buildroot Qt 5
/********************************************************************************* * Buildroot Qt 5 ...
- Texas Instruments matrix-gui-2.0 hacking -- helper_functions.php
<?php # PHP_SELF: 但前正在执行脚本的文件名,与document root相关 # QUERY_STRING: 查询(query)的字符串 $cachefile = " ...
- MyEclipse2014配置Tomcat开发JavaWeb程序JSP以及Servlet
http://blog.csdn.net/21aspnet/article/details/21867241 1.安装准备 1).下载安装MyEclipse2014,这已经是最新版本. 2).下载 ...
- php curl批处理
php模拟多线程用到curl库,这个库很强大,可以做好多事,比如模拟登陆,文件上传/下载,数据采集等. 下面是我的代码,很简单,有些还功能还不会用. <?php $node_urls=array ...
- Linux下idea选择tomcat server 报错Warning the selected directory is not a valid tomcat home
这是文件的权限问题,在tomcat的目录下执行以下代码 sudo chmod 777 -R tomcat8/ 然后再去idea中配置即可
- 转:三种状态对象的使用及区别(Application,Session,Cookie)
Application状态对象 Application 对象是HttpApplication 类的实例,将在客户端第一期从某个特定的ASP.NET应用程序虚拟目录中请求任何URL 资源时创建.对于We ...
- 有锁Iphone 3GS 6.0.1 降级刷到4.2.1 完美越狱+解锁
2012-12-20 百度空间所写 前言:由于之前的3GS升级到6.0.1后会有重启之后无法打电话的情况,同学觉得这样很烦,搞得手机不像个手机了.但是这也是没办法的,毕竟是不完美越狱加软解锁的.于是, ...
- Restrictions用法
HQL运算符 QBC运算符 含义 = Restrictions.eq() 等于equal <> Restrictions.ne() 不等于not equal > Restrict ...