zoukankan      html  css  js  c++  java
  • 初识think in java

    JDK:java development kit,包括java编译器(将源程序编译成字节码)、jar打包工具、jdb调试工具、java运行编译后的java程序(.class后缀)、appletviewer(小程序浏览器)等。目前最新是JDK 7.

    它包括了java运行环境,java工具和java基础的类库。

    安装完JDK,设置path和classpath

    系统变量中新建JAVA_HOME为:c:\java\jdk7;

    在path中添加;%JAVA_HOME%\bin;

    新建classpath为:

    .;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar;

    classpath包含三个部分,.表示当前目录下、tools.jar与dt.jar是压缩工具.

    java.lang是包含在任何一个java程序中的。

    函数中对象的传入是object reference,所以函数内的改变会体现到函数外。这不同于c++,后者会为传入的对象区分是pass by value,还是pass by reference.

    main函数入口:

    public staic void main(String []args){

    }

    这里main是static,所以可以调用的函数也必须是static,至少这里接触的是如下形式:

    public class MyTest{

    static void f(String s,int i){

    System.out.println(s+“= ”+i)

    }

    static void g(){

    }

    public static void main(String[]args){

    f();

    g();

    }//main

    }//class MyTest

    上述的f中是采用+将String, ” ”以及一个int进行连接起来.+类似c++中的重载,那么String应该是实现将i进行int到String的类型转换了把?(疑问待解决)(JDK中找到答案:Java 语言提供对字符串串联符号("+")以及将其他对象转换为字符串的特殊支持。字符串串联是通过 StringBuilder(或 StringBuffer)类及其 append 方法实现的。字符串转换是通过 toString 方法实现的,该方法由 Object 类定义,并可被 Java 中的所有类继承。有关字符串串联和转换的更多信息,请参阅 Gosling、Joy 和 Steele 合著的 The Java Language Specification

    第三章 控制程序流

    为了产生随机数,调用Random类,该类在java.util中。

    import java.util.Random (or) import java.util.*(两者都可,只是,*代表import所有的class,那么编译时间会多);

    Random rand = new Random();

    这里没有传入参数作为种子,所以java是使用当前时间作为种子(seed)。通过rand对象可以产生各种随机数,如:

    rand.nextInt();

    rand.nextFloat();

    rand.nextDouble();

    rand.nextLong();

    关系运算符

    ==,!=这些运算符,他们比较是object reference,不是对象的值,因此,如下的比较可以看出来:

    Integer n1 = new Integer();

    Integer n2 = new Integer();

    System.out.println(n1==n2);//false;

    System.out.println(n1!=n2);//true;

    n1和n2的object reference是不同的,如果要比较值,那么是需要是equals()函数

    System.out.println(n1.equals(n2));//true

    但是equals()是默认拿object reference来比较的,所以Integer是override了equals()函数才使得n1和n2是值之间的比较。许多class都override了equals()函数,所以可以放心当作取值比较来使用。但是如果自己实现class,那么就必须override这个equals(),否则它默认是object reference了。如下例子来解释自己定义的class

    class MyInteger{

    int i;

    }

    public class static  void main(String []args)

    {

    MyInteger v1  = new MyInteger();

    MyInteger v2 =  new MyInteger();

    v1.i = v2.i = 10;

    System.out.println(v1 == v2);//false

    }

    这里由于MyInteger并没有override equals(),所以还是调用的equals()是默认的object reference 来比较,结果为false。

    类比C++,我想这里的object reference 可以想象为对象的地址,或者类比python,v1和v2的id是不同的,所以object reference也是不同的。

    从目前可以看出,java与c++的不同,c++总是区分pass by value还是pass by reference

     

    逻辑运算符

    三种:AND,OR,NOT

    boolean值在java中只能使用上述三种操作,即 boolean && boolean,boolean ||boolean, !boolean三种,不同与c++中,可以将non-boolean作为操作数,如在c++中,1 &&2,1 ||2,!1这三种都是成立的。因为在c++中,非零即是true。零才是false。操作数1和2都被转化为boolean中的true然后参与逻辑运算。但是java中不允许这样的操作。

    java中不提供sizeof()运算符,因为在所有机器上,每种数据类型都有相同的容量大小。

    Math.random()同样会产生随机数,但是它是介于0和1之间的值。范围是[0,1),即前闭后开。

     

    第四章 初始化和清理

    构造函数,(呵呵,是否存在析构函数呢,拭目以待)来杜绝悲催的程序员可能忘记了初始化操作,这在c++中当包含指针时候,使用了为初始化的指针…)

    第五章 隐藏实现细目

    让变动的食物与不变的食物彼此隔离,是OOD的首要考虑。

    access specifier(访问权限修饰词);

    当你import java.util.Random或者Import java.util.*,那么就是取用的就是package。import存在的理由,是为了提供命名空间的管理机制。

  • 相关阅读:
    hadoop-1.2.1-1.x86_64.rpm、jdk-7u45-linux-x64.tar.gz安装(64位)
    如何卸载rpm包
    html+css基础知识总结
    css常用公共样式
    jquery时间控件datepicker
    jquery事件重复绑定的快速解决方法
    原生javascript里jsonp的实现原理
    Bootstrap分页插件--Bootstrap Paginator
    数据库基础知识(1)--数据库php连接
    jQuery radio取值,checkbox取值,select取值
  • 原文地址:https://www.cnblogs.com/crafet/p/2380653.html
Copyright © 2011-2022 走看看