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类型。

多态:

  1. >多态的定义:指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。(发送消息就是函数调用)
  2. >实现多态的技术称为:动态绑定(dynamic binding),是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。
  3. >多态的作用:消除类型之间的耦合关系。

多态存在的三个必要条件
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关键字的好处

  1. final关键字提高了性能。JVM和Java应用都会缓存final变量。
  2. final变量可以安全的在多线程环境下进行共享,而不需要额外的同步开销。
  3. 使用final关键字,JVM会对方法、变量及类进行优化。

不可变类

创建不可变类要使用final关键字。不可变类是指它的对象一旦被创建了就不能被更改了。String是不可变类的代表。不可变类有很多好处,譬如它们的对象是只读的,可以在多线程环境下安全的共享,不用额外的同步开销等等。

15.Java API

System与Runtime类

Java与C++语法的区别的更多相关文章

  1. php与java语法的区别

    php与java语法的区别 个人觉得在学习语言时,可以通过比较来进行学习.由于长时间写java代码,对java的基本语法还算熟悉,现在转学php,就php中基本语法与java基本语法差异进行比较. 1 ...

  2. 二、JAVA基础、语法

    第二节:JAVA基础.语法 1.修饰符.变量:    Java中主要有如下几种类型的变量    局部变量                                                 ...

  3. 7#Java基本语句语法

    Java基本语句语法https://github.com/DuGuQiuBai/Java/blob/master/day03/day03%E6%80%BB%E7%BB%93.txt 1:位运算符(了解 ...

  4. JSON语法与JavaScript语法的区别

    JSON是独立于语言存在的,在不同的编程语言中对这种数据类型的实现不同,例如在JavaScript中使用JavaScript对象对这种数据格式进行实现,那么在java中当然是用java对象实现. 描述 ...

  5. 第十八节:详解Java抽象类和接口的区别

    前言 对于面向对象编程来说,抽象是它的特征之一. 在Java中,实现抽象的机制分两种,一为抽象类,二为接口. 抽象类为abstract class,接口为Interface. 今天来学习一下Java中 ...

  6. Java抽象类和接口的区别(好长时间没看这种文章了)

    Java抽象类和接口的区别(好长时间没看这种文章了) abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的 ...

  7. Java-杂项: Java中Array和ArrayList区别

    ylbtech-Java-杂项: Java中Array和ArrayList区别 1.返回顶部 1. 1)精辟阐述:可以将 ArrayList想象成一种“会自动扩增容量的Array”. 2)Array( ...

  8. [转帖]java注解与注释注解区别

    https://baijiahao.baidu.com/s?id=1615942718081024481&wfr=spider&for=pc 还需要仔细看一下书的 书里面都有. jav ...

  9. 动静结合?Ruby 和 Java 的基础语法比较(入门篇)

    前言 这篇文章示例代码比较多, Java 程序员可以看到一些 Ruby 相关语法和使用,Ruby 程序员可以看看 Java 的基本语法和使用方法,本文比较长,将近万字左右,预计需要十几分钟,如果有耐心 ...

随机推荐

  1. Android RIL的java框架

    Android RIL的Java部分也被分为了两个模块,RIL模块与Phone模块.其中RIL模块负责进行请求以及相应的处理,它将直接与RIL的原声代码进行通信.而Phone模块则向应用程序开发者提供 ...

  2. WebGL编程指南案例解析之平移和旋转的math库实现

    这里说的math库实现,指的是,通过一般的加减乘除(角度计算)来更新坐标值. 因为涉及到坐标的变化,所以这里都是基于对顶点着色器的修改 平移: var vShader = ` attribute ve ...

  3. 【c++基础】ifstream的构造函数

    公共成员函数: ) ifstream(); initialization () explicit ifstream (const char* filename, ios_base::openmode ...

  4. Nuxt.js实践篇

    nuxt.js 追求完美,相信大家都是这样的.因为前后端分离的弊端性,在项目构建时,浏览器并不会捕捉到项目的内容,所以开始,笔者决定引入nuxt.js文件来配合vue完成Server Slider R ...

  5. Windows 服务器配置、运行、图文流程(新手必备!) - IIS建站配置一条龙

    Window 2008 服务器的配置教程 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar ...

  6. EasyTouch基本用法

    EasyTouch基本用法 本文提供全流程,中文翻译.Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) 1 hierarchy (层次面 ...

  7. MVC中未能加载程序集System.Web.Http/System.Web.Http.WebHost

    ==================================== 需要检查项目的Microsoft.AspNet.WebApi版本是否最新,System.Web.Http 这个命名空间需要更新 ...

  8. 《DSP using MATLAB》Problem 4.10

    今天擦完了玻璃,尽管有地方不那么明亮干净,冷风中瑟瑟发抖,年也快临近了. 代码是从网上找的, function [p, np, r, nr] = deconv_m(b, nb, a, na) % Mo ...

  9. JQuery禁止回车提交表单

    //禁止回车键提交表单——动态绑定 $(function(){ $("input").on('keypress',  //所有input标签回车无效,当然,可以根据需求自定义 fu ...

  10. jquey学习2之jquery动态添加页面片段

    第一个方法:append()方法 [1]$(selector).append(content)//向匹配的所有标签中的内容末尾处添加Html代码,会编译成页面显示. <html> < ...