java基础个人总结



一、java的专业术语:



1、JDK:编写java程序的程序员使用的软件


2、JRE:运行java程序的用户使用的软件


3、SE:用于桌面或简单的服务器应用的java平台


4、EE:用于复杂的服务器应用的java平台


5、ME:用于手机和其他小型设备的java平台


6、java是HTML的扩展

  (1)、 java是一种程序设计语言;

  (2)、HTML是一种描述网页结构的方式

    (3)、XML是一种描述数据的方式


(4)、网页中运行的java程序称为:applet

二、JDK目录树

  1、bin  编译器和工具
  2、demo 实例演示
  3、docs HTML格式的类库文档(包含了HTML格式的类库文件,也可以使用任何浏览器查看这些文档)
  4、include 用于编译本地方法的文件
  5、jre  java运行环境文件
  6、lib  类库文件
  7、src  类库源文件(src目录中已经包含了java类库中公共部分的源代码)
    就学习java而言,docs和src是两个最有用的子目录



三、java中关键字public称为访问修饰符,用于控制程序其他部分对这段代码的访问级别。

      1、关键字class表明就java程序中的全部内容都包含在类中,关键字class后面紧跟类名。(类名是以大写字母开头的名词 例如:FirstSample,CameCase)

    2、源代码的文件名必须和公共类名是一样的,并且使用.java作为扩展名。如:FirstSample.java  

    3、java中一共8种基本类型,其中4种整型、2种浮点型、1种用于表示Unicode编码的字符单元的字符类型char和1种用于表示真值的boolean类型

   4、四种整型:int:4字节

              short:2字节
                          long:8字节      
                  byte:1字节
   5、两种浮点类型:float:4字节
                double:8字节
   double表示这种类型的数值精度是float类型的两倍;大部分应用程序都采用的是double类型。
   6、十六进制数值的前缀是0x;八进制的前缀是0; 从java7开始;二进制的前缀是0b;

四、变量


 (一)变量初始化
 
  1、在java中每个变量属于一种类型,就是声明变量!!!
  
  2、声明一个变量之后,必须用赋值语句对变量进行显示初始化!!!


 (二)常量
  
  1、在java中,利用关键字final指示常量。  
   例如:final doubel pageWitdth=2.54;
     (关键字final表示这个变量只能被赋值一次。一旦赋值之后,就不能够在被更改了。)
   在java中,经常希望某个变量可以在一个类中的多个方法中使用,通常将这些变量称之为类变量。
    例如:在类中定义一个:public static final double pageWidth=2.54;(注意:类常量的定义是位于main方法之外的)


  2、数学函数


    在Math类中,包含了各种各样的数学函数
    例如:double y = Math.sqrt(x);计算x的平方根是多少。
  在源文件的顶部加上:import static java.Math.*;之后就不必在数学方法名和常量名前添加“Math”。


  3、强制类型转换(cast)
  
   强制类型转换的语法格式是在圆括号中给出想要转换的目标类型,后面紧接着待转换的变量名。
 例如:(1)double x = 9.997;
          int nx = (int) x;
          输出的nx的值是9; 


        //对浮点数进行舍入运算,得到最接近的整数
       (2)double x = 9.997;
            int nx = (int) Math.round(x);
          输出的nx值是10;
   当调用round的时候,仍然需要使用强制类型转换为(int)。因为round方法返回的结果是long类型。  


五、字符串

    java字符串就是Unicode字符序列。Java没有内置的字符串类型,而是在标准java类库中提供了一个预定义类(String),
  每个用双引号括起来的字符串都是String 类的一个实例。
  (一)、子串
     1、String类的substring方法可以从一个较大的字符串提取出一个子串。
      例如:String greeting = "Hello"
            String s = greeting.substring(0,3);
         创建了一个有字符“Hel”组成的字符串。(substring方法的第二个参数是不想复制的第一个位置)

  (二)、字符串的拼接
      java语言中使用+号连接(拼接)两个字符串。
        例如:String expletive = "Expletive";
              Srting PG13 = "deleted";
              String message = expletive + PG13;
           输出结果是:Expletivedeleted


  (三)、检测字符串是否相等

      可以使用equals方法检测两个字符串是否相等。
      表达式:s.equals(t)
            1、如果字符串s与字符串t相等,则返回true
            2、如果字符串s与字符串t不相等,则返回false
      使用equalsIgnoreCase方法表示检测两个字符串是否相等,并且不区分大小写。
         例如:"Hello".equalsIgnoreCase("hello");

   (四)、构建字符串


      1、首先,构建一个空的字符串构建起器
         String Builder = new StringBuilder();
      2、当每次需要添加一部分内容时,就调用append方法。
         builder.append(ch);     
         builder.append(str);  
      3、在需要构建字符串时就调用toString方法,将可以得到一个String对象。
         String completedString = builder.toString();

   (五)、输入输出
 
      1、读取输入
         通过控制台进行输入,首先需要构造一个Scanner对象,并与“标准输入流”System.in关联。
          Scannrer in = new Scanner(system.in);
         现在可以使用Scanner类的各种方法实现输入操作。
         例如:(1)、nextLine方法输入一行
   System.out.print("What is your name?");
   String name = in.nextLine();   
 
 String age = innextInt();//nextInt方法读取一个整数。
                                           //nextDouble方法读取一个浮点数。


  最后在程序的最开始添加一行  import java.util.*;
         Scanner类定义在java.util包中。当使用的类不是定义在基本的java.lang包中时,一定要使用import指示字将相应的包相加载进来。
  
      2、文件的输入与输出

  (1)、对文件的读取,需要一个用File对象构造一个Scanner对象。
              如:Scanner in = new Scanner(Path.get("myfile.txt"));
           如果文件名中包括反斜杠符号,就要记住在每个反斜杠符号前面再加上一个额外的反斜杠。
     如:"c:\\mydirectory\\myfile.txt"

(2)、要想写入文件,就需要构造一个PrintWriter对象,在构造器中,只需要提供文件名:
  如:PrintWriter out = new PrintWrite("myfile.txt");

      3、控制流程

块(block)是指有一对花括号括起来的若干条简单的java语句。块确定了变量的作用域。一个快可以嵌套在另一个块中。但不能在嵌套的两个块中声明同名的变量。
        (1)、多重选择:switch语句
        switch语句将从与选项值相匹配的case中标签处开始执行直到遇到break语句,或者执行到switch语句的结束出为止。如果没有相匹配的case标签,而有default自居,就执行这个字句。
       case标签类型可以是(1)char、byte、short、或int的常量表达式。
                        (2)枚举常量
  (3)字符串字面量         

(2)、中断控制流程语句
             1、退出switch语句的break语句。break语句:用于强制性的终止整个循环。
             2、continue语句(将控制转移到最内层的首部)结束本次循环继续下一次。

      4、大数值

        java.math包中的两个很有用的类:BigInteger和BigDecimal。
         (1)、BigInteger  类实现了任意精度的整数运算   
         (2)、BigDecimal  类实现任意精度的浮点数运算

        使用静态的valueOf方法可以将普通的数值转换为大数值:
              BigInteger a = BigInteger.valueOf(100);

       在用大数据进行运算处理的时候需要大数值类中的add、multiply、divide和subtract进行运算符处理。
 例如:BigIntteger c = a.add(b);//c = a+b;

      5、命令行参数

         每个java应用程序都有一个带String[] args参数的main方法。这个参数表明main方法
        将接收一个字符串数组,也就是命令行参数。



六、对象和类(对象是具体的,类是抽象的)

    1、面向对象的程序是由对象组成的,每个对象都包含对用户公开的特定功能部分和隐藏的实现部分。
       面向对象的程序设计是将数据(组织数据)放在第一位,然后考虑操作数据的算法。

    2、类(类名要和文件名相一致)
      类是构造对象的模板或蓝图。

    (1)、类中的基本概念
      封装:是将数据和行为组合在一个包中,并对对象的使用者隐藏了数据的实现方式。
      实例域:对象中的数据称为(实例域)
      方法: 操纵数据的过程
      对于每个特定的类实例(对象)都有一组特定的实例域值。

   (2)、类之间的关系
         类之间常见的关系:
               依赖(“user-a”):如果一个类的方法操纵另外一个类的对象,就说一个类依赖于另外一个类。
               聚合(“has-a”):意味着类A的对象包含着类B的对象。
               继承(“is-a”):            

    3、对象
      对象就是类的实例

      对象的是三个状态:1、对象的行为
      2、对象的状态:每个对象都保存着描述当前特征的信息,对象的状态的改变必须通过调用方法实现
      3、对象标识--如何辨别具有相同行为与状态的不同对象?
     作为一个类的实例,每个对象的标识永远是不相同的,状态也尝尝存在真差异。

    4、用户自定义类
    (1)、在一个源文件中,只能有一个共有类,但可以有任意数目的非共有类。
    (2)、如果在一个源文件中包含了两个类,有两种编译源程序的方法。
          1、使用通配符调用java编译器,使得所有与通配符匹配的源文件都被编译成类文件。
          2、直接输入:javac EmployeeTest.java
    (3)、被关键字public标记的方法意味着任何类的任何方法都可以调用这些方法。
    (4)、被关键字private标记的方法则只能被自身的类能够访问这些实例域,而其他类则不能读写这些域。
    (5)、如果没有被public和private标记的,这部分(类 方法和变量)可以被同一个包中所以方法访问。
    (6)、在每一个方法中,关键字this表示隐式参数。
    (7)、显示参数一般是明显的列在方法声明中的,位于方法名后面的括号中的数值。
    
     5、私有的方法

        在Java中,为了实现一个私有的方法,只需要将关键字public改为private即可。
     只要方法是私有的,类的设计者就可以确信:它不会被外部的其他类所操作,可以将其删除。
     如果方法是公有的,就不能将其删除,以为其他代码很可能依赖它。

     6、final实例域

       当用final修饰一个类时,表明这个类不能被继承。
       使用final方法是把方法锁定,以防任何继承类修改它的含义
       对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。
       当用final作用于类的成员变量时,成员变量(注意是类的成员变量,局部变量只需要保证在使用之前被初始化赋值即可)必须在定义时或者构造器中进行初始化赋值,而且final变量一旦被初始化赋值之后,就不能再被赋值了。


七、静态方法和静态域

     1、如果将域定义为static,每个类中只有一个这样的域。而每一个对象对于所有的实例域却都有自己的一份拷贝。

     2、静态常量:public static final double PI = 3.15159265358.
      由于每个类对象都可以对公有域进行修改,所以,最好不要将域设计为public。
      然而,公有常量(即final域)却没问题。因为out被声明为final,所以不允许再将其他打印流赋值给它。

     3、静态方法:是一种不能面向对象实施操作的方法。
        静态方法中是没有this参数的方法(在一个非静态的方法中,this参数表示这个方法的隐式参数)
      有两种情况下可以使用静态方法:
          (1)、一个方法不需要访问对象状态,其所需参数都是通过显示参数提供的。
          (2)、一个方法只需要访问类的静态域。
       在C++中,使用::操作符来访问自身作用域之外的静态域和静态方法。如:Math::PI
        
      main方法不对任何对象进行操作。事实上,在启动程序的时还没有任何一个对象。
     静态的main方法将执行并创建程序所需要的对象。

     4、方法参数

        两种参数值传递的方式:

       (1)、按值调用:表示方法接收的是调用者提供的值。
       
       (2)、按引用调用:表示方法接收的是调用者提供的变量地址。 

     一个方法可以修改传递引用所对应的变量值,而不能修改专递值调用所对应的变量值。
   
     java程序设计语言总是采用按值传递。也就是说,方法得到的是所有参数值得一个拷贝,特别是,方法不能修改传递给它任何参数变量的内容。

       (3)、方法参数总共有两种类型:1、基本数据类型(数字、布尔值)
                            2、对象引用
     一个方法不可能修改一个基本数据类型的参数。

       (4)、方法得到的是对象引用的拷贝,对象的引用及其他的拷贝同时引用同一个对象。

      (5)、总结下java程序设计语言中方法参数的使用情况:

           1、一个方法不能修改一个基本数据类型的参数(即数值型和布尔型)。

           2、一个方法可以改变一个对象参数的状态。

           3、一个方法不能让对象参数引用一个新的对象。



八、对象构造
     
    1、重载
      两同三不同(同一个类、同一个方法。参数列表不同:类型、个数、顺序 )

    2、java的初始化

       三种初始化数据域的方法:

(1)、在构造器中设置值

        (2)、在声明中赋值
        (3)、初始化块(在一个类声明中可以包含多个代码块。)

总结                      构造器和方法的区别:


主题                     构造器                                       方法
功能 建立一个类的实例                                                    java功能语句
修饰 不能用bstract, final, native, static, or synchronized                 能
返回类型 没有返回值,没有void                                          有返回值,或者void
命名 和类名相同;通常为名词,大写开头                                通常代表一个动词的意思,小写开头
this 指向同一个类中另外一个构造器,在第一行                       指向当前类的一个实例,不能用于静态方法
super 调用父类的构造器,在第一行                                         调用父类中一个重载的方法
继承 构造器不能被继承                                                    方法可以被继承
编译器自动加入                  自动加入(如果没有)
一个缺省的构造器                                                                不支持
编译器自动加入                  自动加入(如果没有)
一个缺省的调用到超类的构造器                                                不支持

     3、调用构造器的具体步骤
       (1)、所有的数据域都被初始化为默认值(0、false和null)
       (2)、按照在类声明中出现的次序,依次执行所有域初始化语句和初始化块。
       (3)、如果构造器的第一行调用了第二个构造器,则执行第二个构造器主体。
       (4)、执行这个构造器的主体。

     4、对象析构和finalize方法

       在析构器中,最常见的操作是回收分配给对象的存储空间。而java中有自动的垃圾回收器,所有java中不支持析构器。
       finallize方法将在立即回收器清除对象之前调用。
      如果某个资源需要在使用完后立即被关闭,那么就需要有人工来管理。
      对象在用完时,可以用一个close方法来完成相应的清理操作。


九、包(package)

   必须位于第一行,包名:是域名的逆序形式。

   包主要原因是确保类名的唯一性。包可以划分成子包。包也可以进行嵌套,嵌套的包之间是没每个有任何关系的。包都有一个独立的类集合。


  1、类的导入

    一个类可以使用所属包中的所有类,以及其他包中的公有类。

    两种方式访问另外一个包中的公有类:

(1)、在每个类名之前添加完整的包名。

  (2)、使用import语句,import语句是一种引用包含在包中的类的简明描述。一旦使用了import语句,在使用类时,就不必写出包的全名了。
     例如:(1)、java.util.Date today = new java.utilDate();

                (2)、import java.util.*;


  2、静态导入


    import语句不仅可以导入类,还可以导入静态方法和静态域。、
     如:import static java.lang.System.*;
       就可以使用System类的静态方法和静态域,而不必加类名前缀;
         out.println("Goodbye World!");  //i.e.,System.out
         exit(); //i.e,System.out;  

  3、将类放入包中

   要将一个类放入包中,就必须将包的名字放在源文件的开头,包中定义类的代码之前。
    例如:package com.horstamann.corejava;
          piubli class Employee{
            ....
          }

  4、包的作用域

    标记为public的部分可以被任意的类使用;
    标记为private的部分只能被定义它们的类使用;
    如果没有指定public和private,这个部分(类 方法或变量)可以被同一个包中的所有方法访问;



十、文档注释


    在源代码中添加专用的定界符“/**”开始的注释,很容易看上去具有专业水平的文档。
   
   1、注释的插入

     javadoc实用程序从下面几个特性中抽取信息:
     (1)、包
     (2)、公有类和包
     (3)、公有的和受保护的构造器及方法
     (4)、公有的和受保护的域
    应该为上面几部分编写注释。注释应该放在所描述特性的前面。
    注释以/**开始,以*/结束。
    每个/**...*/文档注释在标记之后紧跟着自由格式文本(free-form text)。
    标记由@开始,如:@param或@author。
 
   2、类注释

     类注释必须放在import语句之后,类定义之前。





































































































































































































































































































































































评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值