zoukankan      html  css  js  c++  java
  • 从C++转向Java的第一课

    序:计算机语言的学习,最快捷的方法是从一种语言映射到另一种语言。Java和C++作为最通用的面相对象高级语言,不论从语法或者编程上都极具相似性和可效仿行,这里的可效仿包括——语法理解可效仿和编程规范可效仿。本篇将针对Java语言,作重点牵引。

    Java开发环境配置

    1 安装JDK

    版本:jdk1.6.0_27 

    配置用户变量:

    a.新建 JAVA_HOME

        C:Program Files (x86)Javajdk1.6.0_27 (JDK的安装路径)

    b.新建 PATH

        %JAVA_HOME%in;%JAVA_HOME%jrein

    c.新建 CLASSPATH

         .;%JAVA_HOME%lib;%JAVA_HOME%lib ools.jar

    配置完成后,cmd 运行java命令看是否成功。

    2 安装eclipse

    版本:eclipse-jee-juno-win32

    解压到安装路径即可。

    再谈封装

    封装,是面相对象最基本的概念,其意义在于保证某些数据不被外界干扰。C++中也是如此——类。特别要注意的是精准地定义数据的访问权限(public,private,protect)。但是在java中,有一个比类要高大的概念——包。我是这么区分的,类解决了数据对象和操作方法的抽象,而包封装了业务逻辑。类对于java来说,显得更重要,因为java程序的入口就是类,main函数存在类中。

    继承和多态

    这两个概念基本上和C++是雷同的。

    程序的区别

    这是两种语言的最大区别:C++是编译型语言,而java是解释型语言。

    Javac编译器将.java文件编译成example.class文件,这个文件中包含了程序的字节码,而字节码中包含的是java解释程序将要执行的指令码。所以.class是不能运行的,必须用java解释器去解释。比如java example。

    为什么java程序的文件名必须和其public类同名呢?

    当java程序被编译后,每个单独的类都被放入自己的.class文件中,运行java解释器实际上是指定想要运行的类的名字,他会自动搜索到包含该名字且带有.class的文件。如果不同名,那将无法找到。

    另外,java编译器能编译通过没有main函数的类,但是解释器必须有main函数。

    数据类型

    Java比C++更加严谨,对数据类型有更高要求,比如java不能讲float赋值给int。不兼容的类型必须作强制转换。

    Java的布尔类型为boolean,值为true或者false。

    Java不能嵌套声明同一个变量,而这在c++中是允许的。

    int x = 1;

    {

    int x = 2;

    }

    Java数组运用稍有不同,java的数组需要动态分配。

    int month[];

    month = new int[12]; // 分配了12个元素,每个元素被初始化为0。

    或者

    int[] month = new int[12];

    Java提供数组边界检测,而这点在C++中是不具备的。如果越界,将爆出如下异常:

    java.lang.ArrayIndexOutOfBoundsException

    java中没有sizeof函数,数据类型在所有的机器上长度相同。

    字符串

    字符串在C++中是一种类型,而在java中,它已经不是一种类型,而是一个对象。这点在很多web语言中都是如此,比如JavaScript中,连数组也是一种对象!

    最大的区别

    Java没有指针概念!为什么呢?为了小应用程序图片防火墙。

    eclipse编码快捷排版

    快捷方式:Ctrl+Shift+F

    java标签运用原则

    (1) 一般的continue 会退回最内层循环的开头(顶部),并继续执行。

    (2) 带标签的continue 会到达标签的位置,并重新进入紧接在那个标签后面的循环。

    (3) 一般的break 会中断并跳出当前循环。

    (4) 带标签的break 会中断并跳出标签所指的循环。

    再谈this

    指向本类对象

    再谈static

    静态方法就是没有this的方法。在“静态方法”的内部不能调用“非静态方法”3,反过来倒是可以的。而且你可以在没有创建任何对象的前提下,仅仅通过类本身来调用静态方法。这实际上正是静态方法存在的主要原因。它很象是C语言中的全局函数。Java中禁止使用全局函数,但你在类中置入静态方法就可以访问其它静态方法和静态字段。

    类的静态变量

    类的静态变量是该类所有对象共用的同一个成员变量。

    类的静态方法

    静态方法是使用公共内存空间的,就是说所有对象都可以直接引用,不需要创建对象再使用该方法。 

    资源释放

    1. 对象可能不被回收。

    2. 垃圾回收并不等于“析构”。

    3.垃圾回收只与内存有关。

    final

    java中的final修饰词类似于c++中的const变量。

    函数

    随机数函数

    import java.util.*;

    int i = rand.nextInt(100); // 取100以内的随即整数

    在Math.random()的输出中包括了0.0,用数学语言,输出值范围是[0,1)

    比较函数==和equals()的区别

    equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。
    ==比较的是2个对象的地址,而equals比较的是2个对象的内容。

    implements接口实现

    implements是一个类实现一个接口用的关键字,他是用来实现接口中定义的抽象方法。比如:people是一个接口,他里面有say这个方法。
    public interface people()
    {
       public say();
    }
    但是接口没有方法体。
    只能通过一个具体的类去实现其中的方法体。
    比如chinese这个类,就实现了people这个接口。
     public class chinese implements peopel{
       public say()
       {System.out.println("你好!");}
    }

    包——java新概念

    包——程序库单元

    import packagename;

    比如java发布的utility程序库

    import java.util.*;

    这样就可以使用该包下的所有类

    请注意,Java 包的命名规则全部使用小写字母,包括中间的字也是如此。

    声明一个包的语句如下

    package mypackage;

    之后,要使用该包的类,必须先import该包。

    你在创建自己的包时,将会发现 package 语句必须是文件中的第一行非注释程序代码。

    如果A和B包中都有class1这个类名,则使用时,需带前缀

    A.class1 obj = new A.class1();

    有了包的概念,则我们可以定制自己的程序库了。

    再谈访问权限

    public, protected 和private

    不同点:

    c++可以延续之前的权限设置,而java必须在每一处定义的地方加上权限声明。

    三个权限的使用方法和c++中的基本雷同。

     

    转自:http://www.cnblogs.com/viviman/archive/2013/01/09/2853150.html

  • 相关阅读:
    matplotlib-2D绘图库-面向对象
    C 指针
    POCO库中文编程参考指南(8)丰富的Socket编程
    POCO C++ SOCKET
    c++ poco StreamSocket tcpclient测试用例
    用OpenLayers开发地图应用
    Nginx-rtmp模块实现流媒体play、push、pull功能
    使用pjsip传输已经编码的视频,源码在github
    ReSIProcate源码目录下功能说明
    resiprocate使用入门:内网搭建基于repro的sipproxy测试环境
  • 原文地址:https://www.cnblogs.com/hnfxs/p/5772548.html
Copyright © 2011-2022 走看看