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

Java基础01 从HelloWorld到面向对象(转载)的更多相关文章

  1. Java基础01 ------ 从HelloWorld到面向对象

    Java是完全面向对象的语言.Java通过虚拟机的运行机制,实现“跨平台”的理念.我在这里想要呈现一个适合初学者的教程,希望对大家有用. "Hello World!" 先来看一个H ...

  2. java基础 01

    java基础01 1. /** * JDK: (Java Development ToolKit) java开发工具包.JDK是整个java的核心! * 包括了java运行环境 JRE(Java Ru ...

  3. java基础01

    1. /** * JDK: (Java Development ToolKit) java开发工具包.JDK是整个java的核心! * 包括了java运行环境 JRE(Java Runtime Env ...

  4. 一、Java基础--01

    Java基础测试题分析 第一题是关于基本的算法知识,这个很有必要去掌握以下,在学校也经常听老师们说找工作比试面试会出一些这方面的知识,我拿到的第一题是关于排序的,虽然很简单,但是我还是要提醒一下基础不 ...

  5. Java基础-synchronized关键字的用法(转载)

    synchronized--同步 顾名思义是用于同步互斥的作用的. 这里精简的记一下它的使用方法以及意义: 当synchronized修饰 this或者非静态方法或者是一个实例的时候,所同步的锁是加在 ...

  6. java基础-01代理类

    简单的代理类实现案例主实现类:ProxyTestimport java.lang.reflect.InvocationHandler;import java.lang.reflect.Proxy;im ...

  7. java基础-01基本概念

    java的特点 跨平台 所谓的平台,我们可以理解为操作系统. 大部分语言是不能跨平台的,比如c语言的程序在windows和linux上需要编写不同的代码. java程序是运行在JVM(Java Vir ...

  8. Java基础12 类型转换与多态(转载)

    类型检查 Java的任意变量和引用经过类型声明(type declaration),才能使用.我们之前见过对象数据.类数据.方法参数.方法返回值以及方法内部的自动变量,它们都需要声明其类型.Java是 ...

  9. java基础知识(3)----面向对象

    三:面向对象:特点: 1:将复杂的事情简单化.2:面向对象将以前的过程中的执行者,变成了指挥者.3:面向对象这种思想是符合现在人们思考习惯的一种思想. 过程和对象在我们的程序中是如何体现的呢?过程其实 ...

随机推荐

  1. oracle数据库维护常用操作

    查看用户相关信息 查看数据库里面所有用户,前提是你是有dba权限的帐号,如sys,system select * from dba_users; 查看你能管理的所有用户! select * from ...

  2. Nginx用为缓存服务器

    Nginx 缓存组成 共享内存 数据定位 存储键和缓存对象的元数据 磁盘空间: 存储数据   nginx做为反向代理时,能够将来自upstream的响应缓存至本地,并在后续的客户端请求同样内容时直接从 ...

  3. mysql 5.7.20解压版安装配置

    MySql 5.7.20版本免安装版配置过程   下载地址为: https://dev.mysql.com/downloads/mysql/ 最下面根据自己的操作系统选择合适的型号 下载完以后解压缩到 ...

  4. macOS中Vim基本配置,颜色主题/语法/indent设置

    macOS中Vim基本配置 Vim的初始化配置 .vimrc 存放位置 macOS 环境下 vim 的初始化配置文件为 .vimrc , 通常有两个(系统版本和用户版本),一个位于 /usr/shar ...

  5. ylbtech-LanguageSamples-ExplicitInterface(显示接口)

    ylbtech-Microsoft-CSharpSamples:ylbtech-LanguageSamples-ExplicitInterface(显示接口) 1.A,示例(Sample) 返回顶部 ...

  6. 开源框架Quartz动态加入、改动和删除定时任务 (二)

    貌似每次回过头去看之前写的一些东西,总感觉不是非常完美~~虽说不做完美人.但也要做完美事!这次主要是针对Quartz的动态维护和Spring集成.简单粗暴一点,直接上代码,有什么不了解留言交流 先来一 ...

  7. IStorage

    IStorage 接口支持结构化存储对象的创建和管理. 结构化存储允许分层存储在单个文件的信息,和通常被称为“文件系统内文件”. 元素的结构化存储对象存储和小溪. 存储类似于目录,和流类似于文件. 在 ...

  8. 踩坑记:httpComponents 的 EntityUtils

    今天写的一个服务程序,有人报告获得的数据中文乱码,而我是用 apache 通过 httpComponents 去取得数据的.于是开启日志的 debug 级别. 在日志里果然发现中文不见了,有乱码出现: ...

  9. 淘宝Diamond架构分析

    转载:http://blog.csdn.net/szwandcj/article/details/51165954 早期的应用都是单体的,配置修改后,只要通过预留的管理界面刷新reload即可.后来, ...

  10. C# 鼠标全局钩子

    /// <summary> /// 鼠标全局钩子 /// </summary> public class MouseHook { private const int WM_MO ...