走进Java

先百度下学习方案。

 

在线文档

http://tool.oschina.net/apidocs/apidoc?api=jdk_7u4

http://tool.oschina.net/apidocs/apidoc?api=jdk-zh

 

菜鸟教程

http://www.runoob.com/

http://www.runoob.com/java/java-tutorial.html

跟它学吧。。

 

javac

java

编译、运行,第一课必然是这点,但不用链接吗?现在还不知道。

javac编译出的文件是.class,似乎不是最终的可执行程序,但可以用java命令执行,难度java的输出文件是.class?这似乎是类的obj吧。

 

JavaSE

JavaEE

JavaME

标准版、企业版、移动版。

 

特性:

1. 简单

没有操作符重载、多继承、自动的强制类型转换、指针。托管内存。

2. 面向对象、使用接口

接口支持多继承,类不支持。

Java支持全面的动态绑定,不懂。

3. 网络支持, java net

URL, URLConnection, Socket,ServerSocket, RMI(远程方法激活)

4. 健壮

强类型、异常、内存托管。处处与C++对比。

5. 安全

网络环境下的 ClassLoader , SecurityManager。

6. 中立,无非就是虚拟机机制的跨平台特性。

7. 移植,同上。

8. 解释性语言,类似.net

9. 高性能,C++笑了。

10. 多线程。

这大概是我在C++里的一个痛点了。

synchronized 线程同步机制

11. 动态

Java类的动态加载。

 

有些明白为什么编译出来是.class了,这就是编译出来的文件,好像java还有包的概念,这就是它的结构吗?

 

注释和C++一样。 // /* */

对象、类、方法、实例变量

类名首字母大写

方法名首字母小写

源文件名与类名相同

入口 public static void main(String args[])

 

标识符 没什么特别

 

修饰符

default

是switch的默认分支?那应该是在关键字部分的作用而不是修饰符。那是默认构造函数?像C++11那样?

strictfp

 

变量 :

类变量(静态变量)

按Java的规则,没有全局变量,只能是静态变量了。

 

数组

 

枚举与c#没什么区别

不对,Java中可以在枚举中构造方法、变量、构造函数,也即枚举也是一个类型。

 

关键字

boolen, 不是bool 需记一下

break
跳出循环或者label代码段,label代码段,比较陌生

const 未使用。那怎么定义常量呢?

extends 表示一个类是另一个类的子类,怎么用呢?

final
表示一个值在初始化之后就不能再改变了
表示方法不能被重写,或者一个类不能有子类。这个解释我懂,什么叫一个值初始化之后就不能再改变了呢?常量?

goto 未使用,即没有goto 那也就是说没有const了,还是怎么定义常量呢

implements
表示一个类实现了接口

import
导入类

instanceof
测试一个对象是否是某个类的实例,类似 iskindof 吧

interface
接口,一种抽象的类型,仅有方法和常量的定义。定义方法我明白,常量也可以在接口中定义

native
表示方法用非java代码实现,什么鬼?调用C++什么的非托管方法?

package
一系列相关类组成一个包,不懂。

strictfp
浮点数比较使用严格的规则,不懂。

synchronized
表示同一时间只能由一个线程访问的代码块,线程同步,概念懂。

throws
定义方法可能抛出的异常。概念知道。

transient
修饰不要序列化的字段,不懂。

volatile
标记字段可能会被多个线程同时访问,而不做同步,公共数据嘛。

刚LOL了一把,继续。

JAVA特性:

多态、继承、封装、抽象、类、对象、实例、方法、消息解析

一个源文件只能有一个public类,可以有多个类。源文件名与public类相同。

如果一个类定义在某个包内, 则首行语句为 package 包名

import 在package之后,类定义之前。

package和import对整个文件中的类生效。

 

包: 给类分类,看定义类似名称空间。

测试代码:

package Employ;

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

import java.io.*;
        
/**
 *
 * @author y
 */
public class Employee {
    String name;
    int age;
    String designation;
    double salary;
    
    // 构造函数,java里叫构造器
    public Employee(String name)
    {
        this.name = name;
    }
    
    // 设置age
    public void empAge(int empAge){
        this.age = empAge;
    }
    
    // 设置designation
    public void empDesignation(String empDesig){
        this.designation = empDesig;
    }
    
    // 设置salary
    public void empSalary(double empSalary){
        salary = empSalary;
    }
    
    // 打印
    public void printEmployee()
    {
        System.out.println("Name:" + name);
        System.out.println("Age:" + age);
        System.out.println("Designation:" + designation);
        System.out.println("Salary:" + salary);
        
    }
}
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package Employ;

import Employ.Employee;

/**
 *
 * @author y
 */
public class EmployeeTest {
    public static void main(String args[]){
        // 构造两个employee
        Employee empOne = new Employee("小杨");
        Employee empTwo = new Employee("大杨");
        
        // 分别调用
        empOne.empAge(2);
        empOne.empDesignation("小杨小杨");
        empOne.empSalary(1000);
        empOne.printEmployee();
        
        empTwo.empAge(30);
        empTwo.empDesignation("大杨大杨");
        empTwo.empSalary(400);
        empTwo.printEmployee();
    }
}

 

顺便测试了运行配置,可以在同一个项目里选择启动的入口类。一个项目中可以有多个main()。c++就不行了。

 

数据类型

java好像没有unsignd 类型?

所有数字类型有 SIZE  MAX_VALUE MIN_VALUE三个静态变量,定义了类型的位数、最大值、最小值。

有void类型,无法操作。java.long.Void

 

果然没猜错,java使用final定义常量。

这里的转义,以后会很有用:

http://www.runoob.com/java/java-basic-datatypes.html

 

访问修饰符,

default,默认,包内可见类似c#的internal

private,public,

protected,与c++和c#不同的是,对包内的类和所有子类都可见。

 

接口,接口里的变量默认为 public static final, 方法默认为public

类和接口不能声明为private

Java的main()必须是公有的, public static 。

protected也不能声明类和接口。声明的成员可以被包内的类可见。接口的成员和方法也不能声明为protected

 

父类public,子类必须public

父类protected, 子类可以public, protected。

父类默认,子类可以private

 

final , 类不能被继承,方法不能被重新定义,变量为常量。

final修饰的引用,不能指向其他对象,但可以被修改。即,这相当于指针常量而不是常量指针。

 

抽象方法必须在抽象类中,抽象类可以不包含抽象方法。

使用extends继承类, implement实现接口,略感别扭。

序列化的对象包含被transient修饰的实例变量时,java虚拟机(JVM)跳过该特定的变量

 

今天到此,

学习了 基础语法,对象和类,数据类型、变量、修饰符。

明天到运算符处。

http://www.runoob.com/java/java-operators.html

posted @ 2015-12-04 23:07  杨海龙  阅读(224)  评论(0编辑  收藏  举报