zoukankan      html  css  js  c++  java
  • Java语言基础

    Java 语言是面向对象的程序设计语言,Java 程序的基本组成单元是类,类体中又包括属性与方法两部分。每一个应用程序都必须包含一个main()方法,含有main()方法的类成为主类。

    一、Java 主类结构

    1、包声明

      一个Java应用程序是由若干个类组成的。

    2、声明成员变量和局部变量

      通常将类的属性称之为类的全局变量(成员变量),将方法中的属性称之为局部变量。全局变量声明在类体中,局部变量声明在方法体中。全局变量和局部变量都有各自的应用范围。

    3、编写主方法

      main()方法是类体中的主方法。该方法从“{”号开始,至“}”结束。public、static、和void分别是main()方法的权限修饰符、静态修饰符和返回值修饰符,Java程序中的main()方法必须声明为public static void。String[]args是一个字符串类型的数组,它是main()方法的参数。main()方法是程序开始执行的位置。

    4、导入API类库

      在Java语言中可以通过import关键字导入相关的类。在JDK的API中(应用程接口)提供了130多个包,如java.awt、java.io等。可以通过JDK的API文档来查看这些类,其中主要包括类的继承结构、类的应用、成员变量表、构造方法表等,并对每个变量的使用目的做了详细的描述,API文档是程序开发人员不可或缺的工具。

    二、基本数据类型

    1、整数类型

      整数类型用来存储整数值,即没有小数部分的数值。可以是整数,也可以是负数。整型数据在Java中有三种表示形式:十进制、八进制和十六进制。整型数据根据它所占内存大小的不同,可分为byte、short、int、和long 4种类型。它们具有不同的取值范围。在定义四种类型变量时,要注意变量的取值范围,超出相应范围就会出错。对于long型值,若赋给的值大于int型的最大值或小于int型的最小值,则需要在数字后加L或l,表示该数值为长整数。

    2、浮点类型

      浮点类型表示有小数部分的数字。Java语言中浮点类型分为单精度类型(float)和双精度类型(double),它们具有不同的取值范围。在默认情况下小数都被看作double类型,若使用float型小数,则需要在小数后边添加F或f。可以使用后缀d或D来明确表示一个double了类型数据,不加“d”不会出错,但生命float型变量时如果不加“f”,系统会认为变量是一个double类型而出错。

    3、字符类型

    (1)char型

      字符char型用于存储单个字符,占用16位(2个字节)的内存空间。在定义字符型变量时要以单引号表示。Java语言和C,C++一样,也可以吧字符作为整数对待。由于Unicode采用无符号编码,可以存储65536个字符,所以Java中的字符几乎可以处理所有国家的语言文字。若想得到一个0~65536之间的数所代表的Unicode表中相应位置上的字符,也必须使用char型显示转换。

    (2)转义字符

      转义字符是一种特殊的字符变量,它以反斜线“”开头,后跟一个或多个字符。转义字符具有特定的含义,不同于字符原有的意思,故称“转义”。转义字符赋值给字符变量时,与字符常量值一样需要使用单引号。

    4、布尔类型

      布尔类型又称逻辑类型,通过关键字boolean来定义布尔类型变量,只有ture和false两个值,分别代表布尔逻辑中的“真”和“假”。布尔值不能与整数类型进行转换。布尔类型通常被用在流程控制中作为判断条件。

    三、变量与常量

      在程序执行过程中,其值不能被改变的量称为常量,其值能被改变的量称为变量。变量与常量的命名都必须使用合法的标识符。

    1、标识符和关键字

    (1)标识符

      标识符可以简单地理解为一个名字,用来标识类名、变量名、方法名、数组名、文件名的有效字符序列。Java 语言规定标识符由任意顺序的字母、下划线、美元符号和数字组成,并且第一个字母不能是数字。标识符不能是Java中的保留关键字。标识符中的字母是严格区分大小写的,使用Unicode标准字符集,最多可以标识65535个字符,因此,Java语言中的字母不仅包括通常的拉丁文字a,b,c等,还包括汉字、日文以及其他许多语言中文字。

    (2)关键字

      关键字是Java语言中已经被赋予特定意义的一些单词,不可以把这些字作为标识符来使用。

    2、声明变量

       变量的使用时程序设计中一个十分重要的环节。定义变量就是要告诉编译器这个变量的数据类型,这样编译器才知道需要配置多少空间给它,以及它能存放什么样的数据。在程序运行过程中,空间内的值是变化的,在这个内存空间就成为变量。为了便于操作,给这个空间取个名字,称为变量名。变量的命名必须是合法的标识符。内存空间内的值就是变量值。在声明变量时可以是没有赋值,也可以是直接赋给初值。变量命名遵循以下几条规则:(1)变量名必须是一个有效的标识符。(2)变量名不可以使用Java中的关键字。(3)变量名不能重复。(4)应选择有意义的单词作为变量名。

    3、声明常量

      在程序运行过程中一直不会改变的量称为常量(constant),通常也被称为“final变量”。常量在整个程序中只能被赋值一次。在为所有的对象共享值时,常量是非常有用的。常量标准语法为 final 数据类型 常量名称[=值]常量名通常使用大写字母,但这并不是必须的。很多Java程序员使用大写字母表时常量,是为了清楚地表明正在使用常量。

      当定义的final变量属于“成员变量”时,必须在定义时就设定它的初值,否则将会产生编译错误。

    4、变量的有效范围

      由于变量被定义出来后只是暂存在内存中,等到程序执行到某一个点,该变量会被释放掉,也就是说变量有它的生命周期。因此,变量的有效范围是指程序代码能够访问该变量的区域,若超出该区域,则在编译时会出现错误。在程序中,一般会根据变量的“有效范围”将变量分为“成员变量”和“局部变量”。

    (1)成员变量

      在类体中所定义的变量被称为成员变量,在整个类中都有效。类的成员变量又可分为两种,即静态变量和实例变量。在成员变量的类型前加上static,这样的成员变量就称为静态变量,静态变量可以跨类,甚至课可以达到整个应用程序之内。对于静态变量,除了能在定义它的类存取,还能直接以“类名.静态变量”的方式在其他类内使用。

    (2)局部变量

      在类的方法中定义的变量(方法内部定义,“{”与“}”之间的代码中声明的变量)称为局部变量。局部变量只在当前代码块中有效。在类的方法中声明的变量,包括方法的参数,都属于局部变量。局部变量只是在当前定义的方法中有效,不能用于类的其他方法中。局部变量的生命周期取决于方法,当方法被调用时,Java虚拟机为方法中的局部变量分配内存空间,当发方法的调用结束后,则会释放方法中局部变量占用的内存空间,局部变量也将会销毁。局部变量可与成员变量的名字相同,此时成员变量将被隐藏,即这个成员变量在此方法中暂时失效。

    四、运算符

      主要用于数学函数、一些类型的赋值语句和逻辑比较方面。Java中提供了丰富的运算符,如赋值运算符、算术运算符、比较运算符等。

    1、赋值运算符

      可以用符号“=”表示,它是一个二元运算符(对于两个操作数作处理),其功能是将右方的操作数所含的值赋给左方的操作数。

    2、算术运算符

      主要由+、-、*、/、%,它们都是二元运算符。

    3、自增和自减运算符

      属于单目运算符可放在操作元之前,也可以放在操作元之后。操作元必须是一个整型或浮点型变量。自增、自减运算符的作用是使变量的值增1或减1。放在操作元前的自增、自减运算符,会先将变量的值加1(减1),然后再使该变量参与表达式的运算。放在操作元后的自增、自减运算符,会先使变量参与表达式的运算,然后再讲该变量加1(减1)。

    4、比较运算符

      比较运算符属于二元运算符,用于&(&&)(逻辑与)、||(逻辑或)、!(逻辑非)逻辑运算符的操作元必须是boolean型数据。在逻辑运算符中,除了“!”是一元运算符之外,其他都是二元运算符。“&&”与“&”的区别: 使用“&”会判断两个表达式,而“&&”则是针对boolean类型的类进行判断,当第一个表达式为false时则不去判断第二个表达式,直接输出结果从而节省计算机判断次数。通常将这种在逻辑表达式中从左端的表达式可推断出整个表达式的值称为“短路”,而那些始终执行逻辑运算符两边的表达式称为“非短路”。

    5、位运算符

      位运算符除按位与和按位或运算符外,其他只能用于处理整数的操作数。位运算符完全针对位方面操作。整形数据在内存中以二进制的形式表示,左边最高位是符号位,最高时是0表示正数,若为1则表示负数。负数采用补码表示。

    (1)“按位与”运算符

      运算符为“&”,为双目运算符。运算法则是:如果两个整型数据a、b对应为都是1,结果才为1,否则为0。如果两个操作数的操作精度不同,则结果的精度与精度高的操作数相同。

    (2)“按位或”运算符

      运算符为“|”,为双目运算符。运算法则是:如果两个数据都对应0,结果才为0,否则为1。如果两个操作数的操作精度不同,则结果的精度与精度高操作数相同。

    (3)“按位取反”运算符

      也称“按位非”运算,运算符为“~”,为单目运算符。就是将操作数二进制中的1修改为0,0修改为1。

    (4)“按位异或”运算符

      运算符“^”,位双目运算符。法则是:两个数二进制表示相同(同时为0或同为1)时,结果为0,否则为1。若两个操作数精度不同,则结果数精度与精度高的操作数相同。

    (5)移位运算符(实用于数据类型有:byte,short,char,int,long)

      <<:左移,将左边的操作数在内存中的二进制数据左移右边操作数指定位数,左边移空的部分补0。

      >>:右移,如果最高位是0,右移空就填0;如果最高位为1,右移空位就填1。

      >>>:无符号右移:无论最高位是0或1,左侧被移空的高位都填入0。

    7、三元运算符

      条件式?值1:值2

      若条件式的值为true,则整个表达式取值1,否则取值2。(等价于 if…else)

    8、运算符优先级

      由高到低是:增量和减量运算符,算数运算符,比较运算符,逻辑运算符,赋值运算符

      如果两个运算符有相同优先级,左边的表达式要比右边的表达式先被处理。

    五、数据类型转换

      将一个值从一种类型更改为另一种类型的过程。如果从低精度数据类型向高精度数据类型转换,则永远不会溢出,并且总是成功的;而把高精度数据类型向低精度数据类型转换则必然会丢失信息,有可能失败。数据转换有两种方式,隐式转换和显示转换。

    1、隐式类型转换

      从低级到高级类型 转换,系统将自动执行,程序员无需进行任何操作。byte<short<int<long<float<double

    2、显示类型转换

      当把高精度的变量的值赋给低精度的变量时,必须使用显示类型转换运算(又称强制类型转换)。(类型名)要转换的值  int a=(int)23.45   当执行显示类型转换时可能会导致精度损失。只要是boolean类型以外其他基本类型之间的转换,全部都能以显示类型转换的方法达到。

    六、代码注释与编码规范

    1、代码注释

    (1)单行注释

      “//”为单行注释标记,从符号“//”开始直到换行为止的所有内容均作为注释而被编译器忽略。//注释内容

    (2)多行注释

      “/**/”为多行注释,符号“/*”与"*/"之间的所有内容均为注释内容。注释中的内容可以换行。/*

    注释内容1

    注释内容2

    ……*/

    (3)文档注释

     " /** */"为文档注释标记。符号"/**"和"*/"之间的内容均为文档注释内容。当文档注释出现在声明(如类的声明、类的成员变量的声明、类的成员方法声明等)之前时,会被Javadoc文档工具读取作为Javadoc文档内容。文档注释的格式与多行注释的格式相同。

    2、编码规范

      (1)每条语句要单独占一行,一条命令要以分号结束。

    (2)在声明变量时,尽量使每个变量的声明单独占一行,即使是相同的数据类型也要将其放在单独的一行上,这样有助于添加注释。局部变量应在声明的同时对其进行初始化。

    (3)在Java代码中,关键字与关键字间如果有多个空格,这些空格均被视作一个。多行空格没有任何意义,为了便于理解、阅读,应控制好空格数量。

    (4)为了方便日后 维护,不要使用技术性很高、难懂、易混淆判断的语句。由于程序的开发与维护都不能是同一个人,所以应尽量使用简单的技术完成程序需要的功能。

    (5)对于关键的方法要多加注释,这样有助于阅读者了解代码结构。

                          

     

  • 相关阅读:
    OI无关 透彻随笔
    置顶帖(传送门)/to 学弟 一个菜鸡的故事
    洛谷P1494 小Z的袜子 莫队
    关于 对拍 的一些认识
    关于 带权二分/wqs二分 的一些认识
    关于 KDtree 的一些认识
    关于 网络流 的一些认识
    省选 考前模板
    关于 多项式 的一些认识/多项式入门
    小球与盒子 的奇妙关系
  • 原文地址:https://www.cnblogs.com/fengxiaopiaoer/p/5324712.html
Copyright © 2011-2022 走看看