zoukankan      html  css  js  c++  java
  • 走进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

  • 相关阅读:
    Win10导出查看删除已安装的证书
    Tomcat配置https访问
    SpringBoot启用https
    使用OpenSSL证书操作详解
    sed命令常用用法
    Jenkins安装第一个插件和通过离线安装包进行安装
    CentOS设置主机名称
    Jenkins使用过程中遇到的问题
    Visual Studio 最新插件
    文章去格式
  • 原文地址:https://www.cnblogs.com/hailong/p/5020790.html
Copyright © 2011-2022 走看看