java的系统学习之路(二)

来源:互联网 发布:手机淘宝一元秒杀攻略 编辑:程序博客网 时间:2024/06/11 22:22

今天主要学习了Java语言基础。

一、Java主类的结构

1、是Java程序的基本组成单元,类中又包括了属性方法两个部分。

通过下面的例子简要介绍下:

//package:声明该类所在的包名是Test,package为包的关键字

package Test;
//类(class)名为Demo1的类,文件名一定要和类名相同
public class Demo1{
    //类的属性称为类的全局变量(成员变量),全局变量声明在类体中
static String str1 = "hello";
    //main方法,是程序开始执行的位置
    //public,static,void分别是main()的权限修饰符、静态修饰符、返回修饰符,String[] args为字符串类型的数组,是main()方法的参数
public static void main(String[] args){
//方法中的属性称为局部变量,局部变量声明在方法体中
String str2 = "world";
System.out.println(str1);
System.out.println(str2);    }}


2、Java严格区分大小写,class关键字不等同于Class。
二、基本数据类型
1、整数类型:
类型 内存空间 取值范围
byte 8位 -128~127
short 16位 -32768~32767
int 32位 -2147483648~2147483647
long 64位 -9223372036854775808~9223372036854775807
要注意变量的取值范围,超出范围就回报错。对于long,如果赋值大于127或小于-127,要在数字后面加上l或者L,表示为长整数,例如long num = 2111L。
2、浮点类型:
类型 内存空间 取值范围
float 32位 1.4E-45~3.4028235E38
double 64位 4.9E-324~1.7976931348623157E308
默认情况下小数都被看作double类型,如果使用float类型,需要在小数后面添加F或者f。在声明float变量时如果不加f,系统会认为是double类型尔出错。
float f1 = 11.11f;
double d1 = 22.22d;
3、字符类型:
(1)char:存储单个字符,占16位(两个字节),用单引号''表示。
例:char x = 'a' 等同于 char x = 97 
(2)转意字符:
是一种特殊的字符变量,以”\“开头,后面可以跟一个或多个字符。我比较常用的几个:
\' 单引号字符
\\ 反斜杠字符
\r 回车
\n 换行
4、布尔类型:
又称为逻辑类型,通过关键字boolean来定义,只有true和false两个值。布尔类型不能与整数类型进行转换。布尔类型通常被用在流程控制中作为判断条件。
例:
boolean b; 
boolean b1,b2; 
boolean b = true;
三、变量与常量
1、标识符:就是一个名字,如类名、方法名、变量名等等,严格区分大写。
使用规则:任意顺序的字母、下划线(_)、$和数字组成,第一个字符不能是数字,并且不能是Java中的保留关键字。
合法:name 、 user_age 、 $aaa
非法:4aaa 、String 、User age
2、关键字:在Java中被赋予了特定意义的词。
J a v a   关   键   字
abstract booleanfinally thispublic int
continue long short float double throw
throws return interface new for break
static defaulttransient importprotected goto(保留关键字)
byte do case if strictfp package
super switch try void catch else
class final private implementsextends char
instanceof whilesynchronized volatile
3、声明变量:
定义变量就是要告诉编译器(compiler)这个变量的数据类型,使的编译器知道需要分配多少空间,以及能存放什么样的数据。程序运行时的空间内的值是变化的,这个内存
空间就是变量。为了便于操作给这个空间起的名字就是变量名。变量的命名规则:
(1)变量名必须是一个有效的标识符;
(2)变量名不能重复;
(3)不能使用Java中的关键字;
(4)尽量选择有意义的单词作为变量名。
例:
int age; //声明int型变量
char char1 = 'r'; //声明char型变量并赋值
内存大概可分为三个区域:系统区(OS)、程序区(Program)和数据区(data)。在程序执行时,程序代码会加载到内存的程序区。假设上面两个变量定义在方法体中,则
程序加载到程序区中。当执行此程序代码时,会在数据区配置空间给出这两个变量。
4、声明常量:
在运行过程中一直不会改变的量称为常量(constant),通常也称为”final变量“。常量在整个程序中只能被赋值一次,可以为所有的对象共享值。
声明一个常量,一要指定数据类型,二要通过final关键字进行限定。当定义的final变量属于成员变量时,必须在定义时就设定初值,否则会编译错误。
例:
final double PI = 3.1415926D;
final boolean BOOL = true;
5、变量的有效范围:
(1)成员变量:在类体中定义的变量为成员变量,成员变量在整个类中都有效。类的成员变量又可以分为静态变量和实例变量。
例:

class var {    int x = 45;//x为实例变量    static int y = 50;//y为静态变量(也称为类变量)}


类型前面加上关键字static就是静态变量。静态变量的有效范围可以跨类,甚至可以达到整个程序之内,可以直接通过“类名.静态变量名”的方式在其他类中使用。
(2)局部变量
在方法体中定义的变量,只在当前代码块中有效。在方法中声明的变量,包括方法的参数,都是局部变量。局部变量只在当前定义的方法中有效,当方法被调用时,Java虚拟机
会为方法中的变量分配内存空间,方法调用结束后,会释放方法中局部变量占用的内存空间,局部变量销毁。
局部变量可以和成员变量名字相同,此时成员变量被隐藏,该成员变量在此方法中暂时失效。

public class Val{    static int times = 3;    public static void main(String[] args){        int times = 4;        System.out.println("times的值为" + times);    }}

四、运算符:

1、赋值运算符:以“=”表示,是二元运算符,功能是将右方操作数所含的值赋给左方的操作数。例:int a = 100;左边必须为变量,右边可以是任何表达式,包括变量、常量、有效的表达式。如果一个表达式含有两个以上的”=“,会从最右方开始处理。

2、算术运算符:

包含+、-、*、/、%(求余)五种。在进行出发运算时,0不能做除数,否则系统会抛出ArithmeticException的异常。

3、自增和自减运算符:

自增、自减是单目运算符,可放在操作元前或后面,必须是一个整型或浮点型变量。

++a(--a)     //表示使用a之前先使a的值加(减)1a++(a--)     //表示使用a之后再使a的值加(减)1
4、比较运算符:

包括>、<、==、>=、<=和!=。运算结果为boolean型,成立为true,否则为false。

5、逻辑运算符:

(1)包括 &(&&)(逻辑与)、||(逻辑或)和!(逻辑非),操作元必须是boolean型数据。

(2)&&和&的区别:

&会判断两个表达式,而&&则是针对boolean类型的类进行判断,当第一个表达式为false时就不判断第二个表达式,直接输出结果节省判断次数。通常将这种在逻辑表达式中从左端的表达死可推断出整个表达式的值称为“短路”,而始终执行逻辑运算符两边的表达式称为“非短路”。&&是短路与,而&是非短路与。

6、三元运算符:

格式:条件式?值1:值2

若条件式的值为true,则整个表达式取值1,否则取值2.;等价于if...else...语句。

7、运算符的优先级:

由高到低的次序:增量和减量的运算 > 比较运算 > 逻辑运算 > 赋值运算

五、数据类型转换

1、隐式类型转换:由低级类型向高级的转换,系统会自动执行,这种转换称为隐式类型转换。精度从低到高:byte < short < int < long < float < double

例: int a = 50; float b = a; 则b的值将是50.0。

2、显式类型转换:

把高精度的变量赋值给 低精度的变量时,需要用到强制类型转换(显式类型转换)。

例:int a = (int)12,23; //此时输出a的值为12

long b = (long)123.4F; //输出b的值为123

强转时可能会导致精度损失,除了boolean类型外,其他类型都可以进行强转。

当把整数赋值给一个byte、short、long、int型变量时,不可以超出这些变量的取值范围,否则必须强转,如:byte b = (byte)129;


六、代码注释与编码规范

1、代码注释:分为单行注释(“//‘)、多行注释(“/* */”)以及文档注释(“/** */”)。当文档注释出现在声明(类的声明、类的成员变量声明、类的成员方法声明等)之前时,会被Javadoc文档工具取作为Javadoc文档内容。程序中,注释要占程序代码总量的20~50%。

2、编码规范:

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

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

(3)Java代码中,关键字与关键字之间有多个空格时将会被视作一个。多行空格没有意义,为了便于理解、阅读,应该控制好空格的数量。

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

(5)为了方便以后维护,不要使用技术性很高、难懂、易混淆判断的语句,尽量使用简单的技术完成程序需要的功能。