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. Python 字典的遍历

    dic = {"赵四":"刘晓光", "刘能":"王晓利", "王木生":"范伟" ...

  2. hihocoder1545 : 小Hi和小Ho的对弈游戏(树上博弈&nim博弈)

    描述 小Hi和小Ho经常一起结对编程,他们通过各种对弈游戏决定谁担任Driver谁担任Observer. 今天他们的对弈是在一棵有根树 T 上进行的.小Hi和小Ho轮流进行删除操作,其中小Hi先手. ...

  3. 51Nod - 1001:数组中和等于K的数对

    基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 给出一个整数K和一个无序数组A,A的元素为N个互不相同的整数,找出数组A中所有和等于K的数对.例如K = 8,数组A: ...

  4. linux下普通用户无法使用sudo命令问题

    今天在新装的linux虚拟机中使用sudo命令时,报错如下 We trust you have received the usual lecture from the local System Adm ...

  5. 如何调优JVM

    堆设置 -Xmx3550m:设置JVM最大堆内存 为3550M. -Xms3550m:设置JVM初始堆内存 为3550M.此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存. -X ...

  6. ballerina 学习二十八 快速grpc 服务开发

    ballerina 的grpc 开发模型,对于开发者来说简单了好多,不是schema first 的方式,而是我们 只要编写简单的ballerina service 就可以了,proto 文件是自动帮 ...

  7. hasura 的3factor 架构结论

    hasura 是一个很不错的开发团队,开发了好几款,不错的产品,最近的graphql engine 是很热的一款 graphql 引擎,同时团队提出了3factor 系统架构理论 参考网站 https ...

  8. stenciljs 学习十三 @stencil/router 组件使用说明

    @stencil/router 组件包含的子组件 stencil-router stencil-route-switch stencil-route stencil-route-link stenci ...

  9. nyoj 数独

    数独 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述 数独是一种运用纸.笔进行演算的逻辑游戏.玩家需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一 ...

  10. spring 自带框架及可替换框架

    spring 自带框架 可替换框架 (可替换框架)是否推荐使用 spring security shiro 推荐使用 spring aop aspectj 集成aspectj使用 Shiro 对比 S ...