java速成一篇博文搞定基础

本文适合于已经有c/c++基础的同学看

一  基本知识

1 数据类型

类似于c/c++


对于long类型常量书写时,要在数字后面加上L或者l。0L
    对于float类型常量书写时,要在小数点后面加上F或者f。0.0F
    对于double类型常量书写时,要在小数点后面加上D或者d。 0.0D

数据类型之间的转换
Java中也有隐式转换(Java则叫做自动转换)和显式转换(Java则叫做强制转换)。自动转换由编译器实现,强制转换则由用户编程实现,再由编译器执行。

自动转换的规则:低级数据类型 ==》 高级数据类型;所占字节数低的数据类型 ==》 所占字节数高的数据类型
例如:byte short int long(整数类型) ==》 float double(浮点数类型)
      byte short(8字节和16字节) ==》int(32字节)
      byte short int(8字节,16字节和32字节) ==》 long(64字节)
      float(32字节) ==》 double(64字节)
      char(16字节) ==》 int(32字节)
注:整数类型中的long,虽然占64个字节,但是却能自动转换成float类型(32字节)。因此,我认为,在自动转换的过程中,先考虑数据类型的等级高低,再考虑数据类型的所占字节数。

再注:从简单数据类型图中不难看出,各数据类型的长度均为固定值,这使得Java能够在不同的平台上运行相同的Java程序时不用修改代码,提高了程序的可移植特性。
 

2  头文件

(1)类似于c++的命名空间或者是头文件

在JAVA中叫做包(package)。Java的核心包中,我们常用的有这样5种:
(1)java.lang , 封装了所有编写java程序所需要的基本类,包括Object、Class、System等。其中,Object类是所有类的根类,任何类都是继承该类而建立的;Class类是由编译器动态生成对象的一个伴随每一个类的特殊类;System类是一个final类,主要提供标准I/O和对系统环境信息的访问等,这个类不能被实例化。
(2)java.awt , 窗口工具包,提供操作图形用户界面的基本功能。
(3)java.applet , 封装Applet类的包,提供Applet执行时需要的类。
(4)java.io , 封装I/O操作的包。
(5)java.util , 提供使用程序类以及集合类等常用的工具类。


3 程序结构

首先,是package语句,用来指定源文件所在的包。

然后,是public classDefinitiom,也就是公共类,用来指定源文件的类名,这个类名要与源文件名相同,可有0个或1个。
再然后,是classDefinition,也就是一般类,可以有若干个,也可以没有。
注:一个java源文件中,最多只能有一个public类,且必须与文件名相同。

我们的第一个程序:

import java.lang.*;
import java.io.*;

class matrix  //一般类 
{     
    void luoyang1()
   {   } 
}

public class Matrixkey //public类,类名要与文件名相同
{     
     public static void main(String args[])
     {
        System.out.println("很高兴认识你,我是Matrixkey");
      }
}


Java的解释执行

在系统运行Java程序时,Java编译器将Java程序(*.java文件)转化为字节码(*.class文件),在运行时,解释器将编译得到的字节码进行解释执行。
Java语言一个源程序可以含有多个类(public类最多一个),每个类编译都生成一个字节码文件。也就是说,有几个类,就有几个字节码文件。
这就是,我们在执行一个Java程序时要先用javac *.java将Java程序转化为字节码的原因。
注:Java区分大小写,因此上面的程序中,public类的类名:Matrixke,那么这个java程序的文件名必须为:Matrixkey.java


5 输入输出 

输出使用println方法。println方法的使用方法如下:

System.out.println( x );

 System是java.lang.*包中的类,out是System类的一静态属性,而println()是out属性的一个静态方法。该方法用于打印后再换行,可以打印基本类型的数据以及字符串等,'+' 在字符串中代表将字符串相互连接。

        int x = 4772;
        /* 输出一个字符m */
        System.out.println(m);  
       
        * 输出一个数字4772 */

        System.out.println("变量x等于"+x); //或者直接System.out.println(x);
     
        /* 输出一个字符串matrixkey */

        System.out.println("matrixkey");

        /* 输出汉字落阳*/
        
System.out.println("落阳");
   

println方法打印后自动换行,因此,下面2条代码输出结果是一致的

int x = 100;
System.out.println(x);
System.out.print(x + "\n");

注意:"+"号用来连接字符串是有点麻烦的! 例如:
System.out.println(1+2+"3"); 
Sysrem.out.println("1"+2+3); 
'+'号优先级别,从左到右 
所以打印结果是这样的:
33(先做1+2 变成字符串"3" 连接后面的"3",所以打印33) 
123(先把"1"和2连接成为"12",在连接3就变成"123")


6 运算符和流程控制

C/C++类似,注意switch不能做实数的判断


二 类  

1 概念

类作为JAVA程序的基本要素,由成员变量(即属性)和成员方法组成,必须先定义在使用。
类声明格式:[修饰符] class 类名 [extends 父类名] [implements 类实现的接口列表]
(1)修饰符用于确定类的访问控制权限(public和friendly)以及类型(abstract和final)
(2)类名是合法的标识符,并且首字母大写
(3)保留字extends指明声明的类所继承的父类
(4)[ ]里的内容可选

/* JAVA中类的声明和继承*/
public class Matrixkey
{成员变量
 成员方法}
 class Matrix extends Matrixkey

/* C#中类的声明和继承*/
public class Matrixkey
{成员变量
 成员方法}
 class Matrixk : Matrixkey

类体格式:class 类名 {成员变量 成员方法}
其中成员变量定义的格式为:<修饰符> <类型> <变量名称>
        成员方法定义的格式为:<修饰符> <返回值类型> <方法名称> ( [ <参数表> ] )
(1)成员变量和成员方法可以通过public private protected等修饰符控制访问权限
(2)java中,方式是通过值传递参数,而不是通过地址,因此方法不可以改变参数的值
例:

public class Matrixkey  //类声明
 { public int a;
    public double b;        //成员变量的声明
    
    static void Min(double c)  //成员方法的声明 
 }

类成员的修饰符有两种
访问限定符:public  可以被外部类访问
                        protected  可以被同一个包中的类以及该类的子类访问
                        private  只能在该类内部被访问
                      
  default  可以被同一个包中的类访问
非访问限定符:静态修饰符 static
                            最终修饰符  final
       抽象修饰符 abstract  syncronized

2 类的继承

在java语言中,类继承是通过extends保留字实现的,格式为:

 class Subclass extends Superclass {...}

(1) 用extends指明新定义的子类(Subclass)的父类(Superclass),就在两个类之间建立了继承的关系
(2)子类可以从父类继承所有非private的属性和方法作为自己的成员
(3)若子类成员变量的名字 和 父类成员变量的名字 相同,则子类成员隐藏父类成员
(4)若子类成员方法 与 父类成员方法的名字,返回值类型,参数表都相同,则子类方式是父类方法的重写
(5)方法重写时注意:子类方法的访问权限要高于父类

子类方法的访问权限比父类方法的访问权限要高,一般用Super关键字来访问父类的方法和变量,但是父类的对象不能直接访问子类的方法和变量


3  数组

定义一维数组的格式:<类型> <数组名> [ ]; 或者 <类型> [ ] <数组名>;
因此,int A [ ]; int [ ] A ; 两者是相同的
(1)<类型>可以是简单或者复杂数据类型
(2)进行数组定义时,不分配内存,因此不要求给出其元素的个数
(3)数组分配内存通过new操作符或静态初始化实现
创建一维数组的格式:<数组名> = new <类型> [ <数组大小> ];
                                          A = new int [3];
定义的同时创建:<类型> [ ] 数组名 = new <类型> [ <数组大小> ];
                                 int [ ] A = new int [3];
初始化数组:对已定义的数组元素赋值,有动态和静态两种方式
(1)当初始化元素数目较少,采用静态初始化
            int A[ ];
            A[0] = 1; A[1] = 2;A[2] = 3;
(2)对简单类型,定义数组的同时,用new操作符进行初始化
           int [ ] A = new int [3]{1,2,3};
(3)当初始化元素数目较多,可以利用循环语句对数组元素动态初始化

多维数组
定义的格式:<类型> <数组名> [ ] [ ];  或者 <类型> [ ] [ ] <数组名>;
初始化:在定义的同时对数组元素进行赋值(静态)
                可以按顺序直接对每一维分配内存或从最高维开始对每一维分配内存(动态)

数组操作
(1)方法arraycopy()用来进行数组的拷贝
(2)ArrayList类用来动态调整数组的大小  


4 字符串的表示

(1)用String类表示字符串,String类的对象表示的是固定长度的字符串
(2)用StringBuffer类表示字符串,StringBuffer类的每个对象都是长度可变的字符串
字符串的操作
(1)对String的修改
String类提供了concat() replace() substring()方法分别实现字符串的连接,替换,取子串的操作;“+”运算符也可以用来连接字符串。
(2)对StringBuffer的修改
 StringBuffer类表示的是可变长度的字符串,使用它,就可以方便地在字符串中插入或在字符串尾追加字符。相应的方法是:insert(),setCharAt(),append()。
(3)判断两个字符串是否相等,使用equals()方法

三  异常处理 

参考类似c/c++。
对于try和catch子句的排列方式,下列哪个是正确的?
A。 子类异常在前,父类异常在后
B。 父类异常在前,子类异常在后
C。 只能有子类异常
D。 父类异常和子类异常不能同时出现在同一个try程序段内
解析:在java语言中,在捕获父类异常时对其子类异常也捕获了,根据try与catch的匹配原则,尽量使用一个父类去捕获其所有子类的异常,而父类和子类异常是可以同时出现的。
答案:A


以上内容总结自:http://www.matrixkey.com.cn/blog/default.asp?CateID=7&distype=list

http://caterpillar.onlyfun.net/Gossip/JavaGossip-V1/JavaGossip.htm





原文地址:https://www.cnblogs.com/catkins/p/5270714.html