java数组比较的头文件_Java与C++的差异(基础)

Java与C++的差异(基础)

JAVA基础

C++的成员方法(函数) 在JAVA中叫做方法

C++的数据成员(属性) 在JAVA中叫做字段

以下同此声明

C++支持全局函数,可随处定义

JAVA不支持全局函数,必须用类套起来

C++导入声明头文件,进行函数引用 #include XXX.h

JAVA导入包.进行类对象的引用,import packetName.ClassName.*

JAVA没有指针,都是引用!

JAVA没有指针,都是引用!

JAVA没有指针,都是引用!

基本语法

语法

Java

C++

大小写敏感

区分大小写

区分大小写

类的命名

首字母大写,驼峰命名

以I或C开头, 驼峰命名

程序文件名

以当前类名命名文件,一个文件只允许一个公有类

命名不要求,多个类可存于一个文件

程序入口

public static void main(String args[]);

int main(int argc, char* argv[]);

程序入口

Java程序都是从Main()方法开始

C++程序从Main函数开始

变量

变量名

变量说明

作用域

局部变量

在方法中定义一个局部变量

随函数的退出而销毁

实例变量

在实例对象时,初始化的类内字段

随对象的生命周期而销毁

类变量

类的静态成员字段

全局属性,随程序生命周期而销毁

构造&&析构

JAVA

功能

C++

功能

构造

初始化静态字段和实例字段,调用基类和字段为类实例的构造

构造

初始化数据成员,调用基类和成员变量为类实例的构造

析构

没有析构

析构

释放资源

数据类型

原始数据类型(基本数据类型)

JAVA中都是有符号数,没有无符号数

JAVA类型名

类型占用大小

C++类型名

类型占用大小

byte

8字节

char

8字节

short

16字节

short

16字节

int

32字节

int

32字节

long

64字节

long long

64字节

float

32位浮点

float

32位浮点

double

64位浮点

double

64位浮点

boolean

1比特

bool

1字节

char

16字节Unicode字符

short int(wchar_t)

16字节宽字符

引用

JVAV引用即C++中的智能指针的引用(引用技术为0则垃圾回收)

JAVA用法: class A = new A();

C++用法: class* A = new A();

可访问描述符

Java 提供一系列可访问描述符来设定类,变量,方法和构造器的访问级别。四种访问级别如下:

描述符

功能

继承方式

default

默认,仅对包可见,不给描述符默认为此。

可继承

private

私有,仅对本类方法可见

不可继承

public

公有,全部方法可见

可继承

protected

保护,仅对本类方法课件

可继承

不可访问描述符

Java 提供一些不可访问描述符来满足其他功能。

描述符

功能

Static

用来创造类方法和变量的。((全局的)静态方法或字段)

Final

用来最终确定和实施类、方法和变量的。

Abstract

用来创造不允许实例化的类和方法。

synchronized 和 volatile

用来当做线的。

运算符

JAVA算数运算符, 关系运算符, 位运算符, 逻辑运算符,赋值运算符, 三目条件运算符同C++

JAVA新增一个位运算符>>>

功能: 右移补零运算

应用: 负数 >>> 清掉最高位,变为整数

JAVA新增一个运算符:instanceof(类型识别,相当于MFC的IsKindOf())

作用为: 判断当前对象是否属于某个类的派生类

运算符优先级,同C++

转义序列,同C++(\r \b \n \b \t 等)

控制语句

JAVA的if...else... 同C++

JAVA的循环同C++

[x] while循环

[x] do...while循环

[x] for循环

for的新特性:for循环增加一个迭代器特性(针对数组):

for(数据类型 : 数据类型数组[]){

数据类型...

}

//方便快速迭代数组,作用为:从下标`0`依次迭代到下标`MaxCount-1`的位置

JAVA 的Switch 语句 同 C++

JAVA 的continue 与 Break 语句 同 C++

JAVA 数字

所有的包装类 (Integer, Long, Byte, Double, Float, Short) 是抽象类 Number 的子类。

Number(数字对象)

152037812834

Num继承图

Number 的方法,请参阅JAVA的文档说明

装箱与拆箱:即 临时变量的存储赋值和内容提取

Character (字符对象)

Character 的方法,请参阅JAVA的文档说明

String类(字符串相关操作)

String 类的方法,请参阅JAVA的文档说明

数组

JAVA 数组的属性 同 C++(下标从0开始)

数组的实例则不同:

1.数据类型[] Name = new 数据类型[数组元素个数];

2.数据类型[] Name = {初始化数据1, 初始化数据2, 初始化数据3 ...};

处理数组:

当处理数组元素时,经常使用的是 loop 循环或 foreach 循环,因为一个数组中所有的元素是相同类型的并且数组的大小是已知的。

foreach循环,为for语句的新特性(参见控制语句中for的新特性)

数组作为参数

public static void printArray(int[] array) {

for (int i = 0; i < array.length; i++) {

System.out.print(array[i] + " ");

}

}

方法的返回值为数组

public static int[] reverse(int[] list) {

int[] result = new int[list.length];

for (int i = 0, j = result.length - 1; i < list.length; i++, j--) {

result[j] = list[i];

}

return result;

}

Arrays类

java.util.Arrays 中的类包含各种静态方法用于排序和搜索数组、数组的比较和填充数组元素。这些方法为所有基本类型所重载。

Arrays 类的方法,请参阅JAVA的文档说明

JAVA 的 日期和时间

Java 在 java.util 包中提供了 Date 类,这个类封装了当前的日期和时间。

Date 类支持两种构造函数。第一个构造函数初始化对象的当前日期和时间。

Date( )

下面的构造函数接收一个参数等于自1970年1月1日午夜起已经过的毫秒数

Date(long millisec)

Date 类的方法,请参阅JAVA的文档说明

获取日期和时间字符串

在 Java 中容易得到当前的日期和时间。可以使用一个简单的 Date 对象的 toString() 方法,如下所示打印当前日期和时间:

import java.util.Date;

public class DateDemo {

public static void main(String args[]) {

// Instantiate a Date object

Date date = new Date();

// display time and date using toString()

System.out.println(date.toString());

}

}

日期比较

有以下三种方式来比较两个日期:

可以使用 getTime() 来获得自1970年1月1日午夜十二时起已经过的毫秒数,然后比较两个对象的值.

可以使用 before( ), after( ), 和 equals( ) 方法,由于12日在18日前,例如, new Date(99, 2, 12).before(new Date (99, 2, 18)) 返回值为 true.

可以使用 compareTo() 方法,这是由 Comparable 接口定义,由 Date 实现。

使用 SimpleDateFormat 格式化日期

import java.util.*;

import java.text.*;

public class DateDemo {

public static void main(String args[]) {

Date dNow = new Date( );

SimpleDateFormat ft =

new SimpleDateFormat ("E yyyy.MM.dd 'at' hh:mm:ss a zzz");

System.out.println("Current Date: " + ft.format(dNow));

}

}

方法

方法的定义与调用,同C++的函数定义与调用

重载,覆盖,隐藏均同C++

支持不定参,传入的是对象,可直接 Obj.length 获取不定参,参数个数

举例: modifier returnType nameOfMethod (Parameter List) { // method body }

modifier:他定义了方法的访问类型,它是可选的。

returnType:方法是可能返回一个值的。

nameOfMethod:这是方法的名称。方法签名包括方法名称和参数列表。

Parameter List:参数列表,它是参数的次序,类型,以及参数个数的集合。这些都是可选的,当然方法也可以没有参数。

方法体:方法体定义了这个方法是用来做什么的。

finalize方法(终结器, 即C++的析构, MFC的DestroyWnd)

垃圾回收(GC)机制,回收此对象之前,会调用finalize()回调,通知对象释放资源(关闭文件等操作)

一般定义:protected void finalize( ) { // finalization code here }

文件操作

相当于C++的 fstream的两个派生类:ofstream和ifstream

输入: FileInputStream

输出: FileOutputStream

注意: 此类对象,会抛异常,应使用Try...Catch...包裹

try {

in = new FileInputStream("input.txt");

out = new FileOutputStream("output.txt");

int c;

while ((c = in.read()) != -1) {

out.write(c);

}

} finally {

if (in != null) {

in.close();

}

if (out != null) {

out.close();

}

}

具体方法参见文档

遍历文件夹

import java.io.File;

public class ReadDir {

public static void main(String[] args) {

File file = null;

String[] paths;

try{

// create new file object

file = new File("/tmp");

// array of files and directory

paths = file.list();

// for each name in the path array

for(String path:paths)

{

// prints filename and directory name

System.out.println(path);

}

} catch(Exception e) {

// if any error occurs

e.printStackTrace();

}

}

}

异常处理

try...catch...功能与用法 同C++;差异:catch的类型至少得是Exception类型

throw/throws 同C++的功能与用法;差异:throws 可抛出多个异常

try...catch...finally...功能与用法 同C++;

所有异常类均继承于:java.lang.Exception

Exception类含有两个子类:IOException 类和 RuntimeException 类。

Throwable的一些常用方法:

SN

方法名

方法描述

1

public String getMessage()

返回关于发生异常的细节信息,这些信息在Throwable的构造函数中被初始化

2

public Throwable getCause()

返回发生异常的原因,由 Throwable 对象来表示

3

public String toString()

返回与getMessage()的结果相联系的类的名称

4

public void printStackTrace()

打印 toString()跟踪错误输出流的栈地址的结果。

5

public StackTraceElement [] getStackTrace()

返回一个数组,其中包含每个元素在栈的地址。元素的索引0代表调用栈的顶部,最后一个元素表示方法调用栈的底部。

6

public Throwable fillInStackTrace()

用当前栈地址来填充 Throwable 对象的栈地址,添加到任何先前的栈地址信息。

以下几点需要注意:

catch 在没有 try 关键字的情况下是不能够出现的。

try/catch 语句块中并不是强制出现 finally 块。

try 语句块不能独立存在(即没有任何 catch 和 finally 块)。

在 try catch 和 finally 块之间是不能出现任何代码的。

自定义的异常

你可以在 Java 中创建自己的异常。编写自己的异常类,要记住以下几点:

所有的异常必须继承自 Throwable。

如果你想写一个自动遵守正确处理或声明规则的检测异常,需要继承 Exception 类。

如果你想编写一个运行时异常,需要继承 RuntimeException 类。

事例:class MyException extends Exception{ }

常见的异常

在 Java 中,可以定义两种异常和错误

JVM 异常:这些异常/错误是由 JVM 在逻辑层上或专门抛出的。

例子: NullPointerException, ArrayIndexOutOfBoundsException, ClassCastException。

程序性异常:这些异常是由应用程序或是编写 API 的程序员明确抛出的

如:IllegalArgumentException, IllegalStateException。

关键字表

JAVA关键字|功能

:-|:-|:-|:-

abstract |表明类或者成员方法具有抽象属性

assert |用来进行程序调试

boolean |基本数据类型之一,布尔类型

break |提前跳出一个块

byte |基本数据类型之一,字节类型

case |用在switch语句之中,表示其中的一个分支

catch |用在异常处理中,用来捕捉异常

char |基本数据类型之一,字符类型

class |类

const |保留关键字,没有具体含义

continue |回到一个块的开始处

default |默认,例如,用在switch语句中,表明一个默认的分支

do |用在do-while循环结构中

double |基本数据类型之一,双精度浮点数类型

else |用在条件语句中,表明当条件不成立时的分支

enum |枚举

extends |表明一个类型是另一个类型的子类型,这里常见的类型有类和接口

final |用来说明最终属性,表明一个类不能派生出子类,或者成员方法不能被覆盖,或者成员域的值不能被改变,用来定义常量

finally |用于处理异常情况,用来声明一个基本肯定会被执行到的语句块

float |基本数据类型之一,单精度浮点数类型

for |一种循环结构的引导词

goto |保留关键字,没有具体含义

if |条件语句的引导词

implements |表明一个类实现了给定的接口

import |表明要访问指定的类或包

instanceof |用来测试一个对象是否是指定类型的实例对象

int |基本数据类型之一,整数类型

interface |接口

long |基本数据类型之一,长整数类型

native |用来声明一个方法是由与计算机相关的语言(如C/C++/FORTRAN语言)实现的

new |用来创建新实例对象

package |包

private |一种访问控制方式:私用模式

protected |一种访问控制方式:保护模式

public |一种访问控制方式:共用模式

return |从成员方法中返回数据

short |基本数据类型之一,短整数类型

static |表明具有静态属性

strictfp |用来声明FP_strict(单精度或双精度浮点数)表达式遵循IEEE 754算术规范

super |表明当前对象的父类型的引用或者父类型的构造方法

switch |分支语句结构的引导词

synchronized |表明一段代码需要同步执行

this |指向当前实例对象的引用

throw |抛出一个异常

throws |声明在当前定义的成员方法中所有需要抛出的异常

transient |声明不用序列化的成员域

try |尝试一个可能抛出异常的程序块

void |声明当前成员方法没有返回值

volatile |表明两个或者多个变量必须同步地发生变化

while |用在循环结构中

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值