zoukankan      html  css  js  c++  java
  • 初学JavaSE

    Java简介

    Java面向对象程序设计语言和Java平台的总称。

    Java常用术语介绍

    JVM:java虚拟机,它是整个java实现跨平台的 最核心的部分,所有的java程序会首先被编译为.class的类文件,这种类文件可 以在虚拟机上执行,也就是说class并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解 释给本地系统执行。

    JRE:java运行环境。光有JVM还不能成class的 执行,因为在解释class的时候JVM需要调用解释所需要的类库lib。 在JDK的安装目 录里你可以找到jre目录,里面有两个文件夹bin和lib,在 这里可以认为bin里的就是jvm,lib中则是jvm工 作所需要的类库,而jvm和 lib和起来就称为jre。

    JDK:java开发工具包,基本上每个学java的人都会先在机器 上装一个JDK,那他都包含哪几部分呢?让我们看一下JDK的安装目录。在目录下面有 六个文件夹、一个src类库源码压缩包、和其他几个声明文件。其中,真正在运行java时起作用的 是以下四个文件夹:bin、include、lib、 jre。现在可以看出这样一个关系,JDK包含JRE,而JRE包 含JVM。

    Eclipse:一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。

    IDE:集成开发环境IDE

    ,Integrated Development Environment )是用于提供程序开发环境的应用程序,一般包括代码编辑器编译器调试器和图形用户界面等工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。

    java中命名规则:

    • Package 的命名
    Package 的名字应该都是由一个小写单词组成。
    • Class 的命名
    Class 的名字必须由首字母大写的单词组成
    • Class 变量的命名
    变量的名字必须用一个小写字母开头。后面的单词用大写字母开头。
    • Static Final 变量的命名
    Static Final 变量的名字应该都大写,并且指出完整含义。
    • 参数的命名

      参数的名字必须和变量的命名规范一致。

    • 数组的命名

      数组应该总是用下面的方式来命名:

      byte[] buffer;

      而不是:

      byte buffer[];

    • 方法的参数

      使用有意义的参数命名,如果可能的话,使用和要赋值的字段一样的名字:

      SetCounter(int size){

      this.size = size;

      }

    • Java 文件样式

      所有的 Java(*.java) 文件都必须遵守如下的样式规则

    • 版权信息

      版权信息必须在 java 文件的开头,比如:

      /**

      * Copyright ?0?3 2000 Shanghai XXX Co. Ltd.

      * All right reserved.

      */

      其他不需要出现在 javadoc 的信息也可以包含在这里。

    • Package/Imports

      package 行要在 import 行之前,import 中标准的包名要在本地的包名之前,而且按照字母顺序排列。如果 import 行中包含了同一个包中的不同子目录,则应该用 * 来处理。

        package hotlava.net.stats;

        import java.io.*;

        import java.util.Observable;

        import hotlava.util.Application;

        这里 java.io.* 使用来代替InputStream and OutputStream 的。

    • Class

        接下来的是类的注释,一般是用来解释类的。

        /**

        * A class representing a set of packet and byte counters

        * It is observable to allow it to be watched, but only

        * reports changes when the current set is complete

        */

        接下来是类定义,包含了在不同的行的 extends 和 implements

        public class CounterSet

        extends Observable

        implements Cloneable

        Class Fields

        接下来是类的成员变量:

        /**

        * Packet counters

        */

        protected int[] packets;

        public 的成员变量必须生成文档(JavaDoc)。proceted、private和 package 定义的成员变量如果名字含义明确的话,可以没有注释。

    • 存取方法

        接下来是类变量的存取的方法。它只是简单的用来将类的变量赋值获取值的话,可以简单的写在一行上。

        /**

        * Get the counters

        * @return an array containing the statistical data. This array has been

        * freshly allocated and can be modified by the caller.

        */

        public int[] getPackets() { return copyArray(packets, offset); }

        public int[] getBytes() { return copyArray(bytes, offset); }

        public int[] getPackets() { return packets; }

        public void setPackets(int[] packets) { this.packets = packets; }

        其它的方法不要写在一行上

    • 构造函数

      接下来是构造函数,它应该用递增的方式写(比如:参数多的写在后面)。

    访问类型 ("public", "private" 等.) 和 任何 "static", "final" 或 "synchronized" 应该在一行中,并且方法和参数另写一行,这样可以使方法和参数更易读。

      public

      CounterSet(int size){

      this.size = size;

      }

    • 克隆方法

      如果这个类是可以被克隆的,那么下一步就是 clone 方法:

      public

      Object clone() {

      try {

      CounterSet obj = (CounterSet)super.clone();

      obj.packets = (int[])packets.clone();

      obj.size = size;

      return obj;

      }catch(CloneNotSupportedException e) {

      throw new InternalError("Unexpected CloneNotSUpportedException: " + e.getMessage());

      }

      }

    • 类方法

        下面开始写类的方法: 第一个单词首字母小写其他单词首字母大写

        /**

        * Set the packet counters

        */

        protected final

        void setArray(int[] r1, int[] r2, int[] r3, int[] r4)

        throws IllegalArgumentException

        {

        // Ensure the arrays www.gzlij.com are of equal size

      if (r1.length != r2.length || r1.length != r3.length || r1.length != r4.length)

        throw new IllegalArgumentException("Arrays must be of the same size");

        System.arraycopy(r1, 0, r3, 0, r1.length);

        System.arraycopy(r2, 0, r4, 0, r1.length);

        }

    • toString 方法

      无论如何,每一个类都应该定义 toString 方法:

      public

      String toString() {

      String retval = "CounterSet: ";

      for (int i = 0; i < data.length(); i++) {

      retval += data.bytes.toString();

      retval += data.packets.toString();

      }

      return retval;

      }

      }

    • main 方法

      如果main(String[]) 方法已经定义了, 那么它应该写在类的底部.

    类和对象:

    类是一种具有相同属性和行为的对象的抽样。

    面向对象: 把软件系统看成各种对象的集合,对象是2最小的子系统。

    类图:

    Person
    name、age、class(属性特征)

    eat()

    sleep()(方法)

    实例化:根据类模板创建实例对象的过程。  格式:类名 对象名 = new 类名(参数1,参数2...参数n);

    构造方法:构造方法是一种特殊的方法,它是一个与类同名且没有返回值类型的方法。对象的创建就是通过构造方法来完成,其功能主要是完成对象的初始化。当类实例化一个对象时会自动调用构造方法。构造方法和其他方法一样也可以重载。

    1.构造方法作用:构造出来一个类的实例   .对构造出来个一个类的实例(对象)初始化。
    2.构造方法的名字必须与定义他的类名完全相同,没有返回类型,甚至连void也没有。
    3.主要完成对象的初始化工作,构造方法的调用是在创建一个对象时使用new操作进行的。
    4.自定义类中,如果不写构造方法,java系统会默认添加一个无参的构造方法。如果写了一个有参的构造方法,就一定要写无参构造方法。

    方法的重载

    构造方法的重载:在一个类内部,方法名相同,方法参数(个数、类型)不同的方法的再次加载。

    常用的数据类型:

    byte(字节)            8         -128 - 127                                                                              0
    shot(短整型)         16       -32768 - 32768                                                     0
    int(整型)              32    -2147483648-2147483648 0
    long(长整型)         64     -9233372036854477808-9233372036854477808                     0       
    float(浮点型)         32    -3.40292347E+38-3.40292347E+38                                     0.0f
    double(双精度)      64    -1.79769313486231570E+308-1.79769313486231570E+308     0.0d
    char(字符型)         16         ‘ u0000 - uffff ’                                           ‘u0000 ’
    boolean(布尔型)     1         true/false       
                                                    false

    常用的类:

    String 字符串类
    System 可得到系统信息
    StringBuilder 字符串工具类
    Thread 线程类
    Math 与数学有关的工具类

    ArrayList 底层用数组实现的集合
    LinkedList 底层用链表实现的集合
    HashMap 接口Map的一个实现类
    HashSet 接口Set的一个实现类
    Scanner 简单文本扫描器,即用户输入。
    Calendar 日期类
    Date 日期类

    File 目录或文件操作类
    FileInputStream 输入流
    FileOutputStream 输出流
    PrintWriter 写入同时可以对文件格式化
    BufferedInputStream 具有缓冲的输入流
    BufferedOutputStream 具有缓冲的输出流
    BufferedReader 从字符输入流中读取文本,缓冲各个字符。

    转义字符:   换行       制表      回车

    字符串与类值类型间转换: int num1=Integer.parseInt(str 1)

                                       int num1=1

                                       int num2=9     System.out.println(+num1 +num2); 结果为19.

    Scanner类介绍:

    用于用户从键盘上输入。导包:import java.Util.Scanner

    用法:Scanner input=new Scanner(System.in);

             int num=input nextInt();输入整型数据

             String str=input.next();输入字符串型数据

             String str2=input.nexlLine();输入下一个字符串型数据

    数组:

    定义:int[]arr  常用

             int arr[]

             int[] arr=new int[5]   定义长度为5的数组

             int[] arr=new int[]{1,2,3}

             int[]arr={1,2,3,4,5}

    数组的下标相当于一个指针,进行操作时需要加一指向下一个元素。

    If分支结构介绍:

    if(条件){

    -----------              判断两字符串是否相等

              }else if(条件){     String name="lina"

    ------------             if("lina".equals(name)){

      }                

                              }

    switch 语法介绍:

    switch(expr){

      case value1:

        statements;         

      break;

      ........

      default:

        statements;

      break;     

        }                                  每个case均以一个break结尾。这样可使执行流程跳转至switch主体的末
    尾。这是构建switch语句的一种传统方式,但break是可选的。若省略break,会继续执行后面的case语
    句的代码,直到遇到一个break为止。

    for循环:

    语法: for(初始语句;判断语句;累加语句){            ( 注意:初始语句应带上其数据类型。)

               循环体

             }

    continue 和break:

    continue: continue之后内容不执行,结束一次循环,重新开始另一次循环。

    break:跳出整层循环。

    while循环和do while循环:

     语法:  while(条件判断语句){

                循环体

                }

                  自加语句(i++)                    ++i :先自加后执行其他运算;    i++: 先执行其他运算后自加;

    语法:  do{

                     循环体

                   }while(条件判断语句);        循环至少执行一次。

    冒泡排序:

     过程: 使小的数据依次上浮。

               若有n个数据,即总长为n,则从下标为0的 元素开始到下标为n-1的元素。

        比较轮数 i      次数 j

                 0                n-1

                 1                n-1-1

         2               n-1-1-1

                 ...                 ...

                 i                  n-i-1

    快速排序:

    从待排数据中任取一个数据作为分界值,比这个分界值小的数放在左边,大的放在右边。对左右两个子序列递归。     

  • 相关阅读:
    rpcbind禁用不了,111端口无法释放?
    python3 pexpect 自动交互修改linux系统密码
    pip将包安装到指定位置
    使用openssl对文件进行加密解密
    james-2.3.2.1发邮件慢,不能多线程同时发
    java指令执行一个class文件并指定依赖包的路径
    ltib for imx280 tips
    使用net-snmp的snmptranslate命令验证MIB文件
    嵌入式linux去掉开机进度条,更换背景,换企鹅logo
    使用cppcheck对C代码进行静态检查
  • 原文地址:https://www.cnblogs.com/linlin0/p/6017878.html
Copyright © 2011-2022 走看看