• Java基础01 从HelloWorld到面向对象(转载)


    Java是完全面向对象的语言。Java通过虚拟机的运行机制,实现“跨平台”的理念。

    "Hello World!"

    public class HelloWorld{
        public static void main(String[] args){
            System.out.println("Hello World!");
        }
    }

    程序中包括Java的一些基本特征:

    • 类(class):上面程序定义了一个类HelloWorld,该类的名字与.java文件的名字相同。
    • 方法(method):类的内部定义了该类的一个方法main。
    • 语句(statement):真正的“打印”功能由一个语句实现,即: System.out.println("Hello World!");

    编译与运行

    使用javac来编译。在命令行中输入下面语句编译:$javac HelloWorld.java

    当前路径下,将有一个名为HelloWorld.class的文件生成。 

    使用java命令来运行:$java HelloWorld。Java会搜寻该类中的main方法,并执行。

    变量

    计算机语言通常需要在内存中存放数据,比如C语言中的变量,Java也有类似的变量。Java和C语言都是静态类型的语言。在使用变量之前,要声明变量的类型。
    变量(variable)占据一定的内存空间。不同类型的变量占据不同的大小。Java中的变量类型如下:
                存储大小    例值      注释
    byte       1byte        3        字节
    int          4bytes      3        整数
    short      2bytes      3        短整数
    long        8bytes      3       长整数
    float        4bytes    1.2      单精度浮点数
    double     8bytes    1.2      双精度浮点数
    char        2bytes     'a'       字符
    boolean   1bit         true    布尔值
    在Java中,变量需要先声明(declare)才能使用。
    public class Test{
        public static void main(String[] args){
            System.out.println("Declare in the middle:");
            int a;
            a = 5;
            System.out.println(a);
        }
    }

    上面a是变量名。可以在声明变量的同时,给变量赋值,比如 int a = 5;

     “变量”的概念实际上来自于面向过程的编程语言。在Java中,所谓的变量实际上是“基本类型” (premitive type)。Java中,可用//引领注释。

    数组

    Java中有数组(array)。数组包含相同类型的多个数据。我用下面方法来声明一个整数数组:

    int[] a;

    在声明数组时,数组所需的空间并没有真正分配给数组。我可以在声明的同时,用new来创建数组所需空间:

    int[] a = new int[100];

    这里创建了可以容纳100个整数的数组。相应的内存分配也完成了。

    我还可以在声明的同时,给数组赋值。数组的大小也同时确定。

    int[] a = new int[] {1, 3, 5, 7, 9};

    使用int[i]来调用数组的i下标元素。i从0开始。

    其他类型的数组与整数数组相似。

    表达式

    表达式是变量、常量和运算符的组合,它表示一个数据。
    public class Test{
        public static void main(String[] args){
            System.out.println("Declare in the middle:");
            int a;
            a = 5 + 1;
            System.out.println(a);
        }
    }

    上面的5 + 1也是一个表达式,等于6。 

    数学表达式

    数学运算,结果为一个数值

    1 + 2                  加法

    4 - 3.4                减法

    7 * 1.5                乘法

    3.5 / 7                除法

    7 % 2                  求余数

    关系表达式

    判断表达式是否成立。即一个boolean值,真假

    a > 4.2                大于

    3.4 >= b               大于等于

    1.5 < 9                小于

    6 <= 1                 小于等于

    2 == 2                 等于

    2 != 2                 不等于

    布尔表达式

    两个boolean值的与、或、非的逻辑关系

    true && false          and

    (3 > 1) || (2 == 1)    or

    !true                  not

    位运算

    对整数的二进制形式逐位进行逻辑运算,得到一个整数

    &                      and

    |                      or

    ^                      xor

    ~                      not

    5 << 3                 0b101 left shift 3 bits

    6 >> 1                 0b110 right shift 1 bit

    还有下列在C中常见的运算符,我会在用到的时候进一步解释:

    m++                  变量m加1

    n--                    变量n减1

    condition ? x1 : x2   condition为一个boolean值。根据condition,取x1或x2的值

    控制结构

    Java中控制结构(control flow)的语法与C类似。它们都使用{}来表达隶属关系。
    选择 (if)
    if(condition1){
        statements;
        ...
    }else if(condition2){
        statements;
        ...
    }else{
        statements;
        ...
    }
    上面的condition是一个表示真假值的表达式。statements;是语句。
    循环 (while)
    while (condition) {
           statements;
    }
    循环 (do... while)
    do {
           statements; 
    } while(condition);  // 注意结尾的;
    循环 (for)
    for (initial; condition; update) {
           statements;
    }
    跳过或跳出循环
    在循环中,可以使用
    break; // 跳出循环
    continue; // 直接进入下一环
    选择 (switch)
    switch(expression) {
    case 1: 
          statements;
          break;
    case 2:
          statements;
          break;
         ...
    default:
         statements;
         break;
    }
     

    面向对象

    “对象”是计算机抽象世界的一种方式。“面向对象”可以用很多方式表达。下面是一种并不精确,但比较直观的理解方式:

    1. 世界上的每一个事物都可以称为一个对象(object),比如张三。对象有身份(Identity),状态(State)和行为(Behavior)。
    2. 对象的状态由数据成员(data member)表示。数据成员又被称作域(field)。我们用其他对象作为该对象的数据成员。比如一个表示身高的整数,比如一个鼻子。
    3. 对象的行为由成员方法(member method)表示。我们简称为方法(method)。一个对象可以有多个方法,比如呼吸,睡觉。
    4. 对象可以归类(class),或者说归为同一类型(type)。同一类型的对象有相同的方法,有同类型的数据成员。某个类型的一个对象被称为该类型的一个实例(instance)
    class Human{
        void breath(){
            System.out.println("hu..hu..");
        }
        int height;
    }

    在{}范围内,Human类有两个成员: 一个数据成员height,一个方法breath()。

    • 数据成员height是整数类型,可以用于存储一个整数。
    • 方法代表了对象所能进行的动作,也就 是计算机所能进行的操作。方法可以接受参数,并能返回值。在breath()的定义中,breath后面的()中为参数列表。由于参数列表为空,所以 breath()不接受参数。在breath()之前的void为返回值的类型,说明breath不返回值。
    • (方法与面向过程语言中的函数类似) 

     现在,我们创建对象aPerson,并调用对象的方法breath:

    public class Test{
        public static void main(String[] args){
            Human aPerson = new Human();
            aPerson.breath();
            System.out.println(aPerson.height);
        }
    }
    class Human{
        void breath(){
            System.out.println("hu..hu..");
        }
        int height;
    }

    在main方法中,使用new关键字创建对象。即使是来自同一个类的对象,各个对象占据的内存也不相同,即对象的身份也不同。

    Human aPerson声明了aPerson对象属于Human类,即说明了对象的类型。

    对象建立后,我们可以用 对象.数据成员 来引用数据成员,使用 对象.方法() 的方式来调用方法。正如我们在后面打印aPerson.height

  • 相关阅读:
    函数模板、函数模板特化、重载函数模板、非模板函数重载
    输出流格式化(以操纵子方式格式化,以ios类成员函数方式格式化)
    文件的读写、二进制文件的读写、文件随机读写
    文件流(fstream, ifstream, ofstream)的打开关闭、流状态
    流类库继承体系(IO流,文件流,串流)和 字符串流的基本操作
    对象语义与值语义、资源管理(RAII、资源所有权)、模拟实现auto_ptr<class>、实现Ptr_vector
    operator new 和 operator delete 实现一个简单内存泄漏跟踪器
    异常与继承、异常与指针、异常规格说明
    程序错误、异常(语法、抛出、捕获、传播)、栈展开
    C语言错误处理方法、C++异常处理方法(throw, try, catch)简介
  • 原文地址:https://www.cnblogs.com/airry66/p/3927521.html
Copyright © 2020-2023  润新知