java基础复习笔记2

来源:互联网 发布:手机淘宝已购买生成器 编辑:程序博客网 时间:2024/05/21 17:02

第二章 数据类型与运算符

1.标识符命名规则

Java语言中标示符必须以字母、下划线(_)、美元符号($)开头,后面可以跟上任意数目的字母、数字、下划线(_)、美元符号($)。此处的字母不仅仅是26个英文字母,还可以是中文字符、日文字符…….  标示符=1个字母/下划线/美元符号+n个字母/数字/下划线/美元符号

注意:标示符不能包括空格,不能使用java的关键字和保留字和直接量,标示符的长度不受限制

由于Java采用的Unicode编码(范围从\u0000--\u FFFF),因此Java的标示符可以使用Unicode能够表示的任意字符。Java语言严格区分大小写。

2. java关键字(48个),保留字(2个 gotoconst),直接量(3个truefalse、null

        注意: :java中关键字、保留字、直接量都是小写,If,For都可以用来作为标示符。


3.java数据类型(java语言是强类型,所有变量需先声明后使用

1)基本数据类型(48种)       

整数类型:byte      1个字节;Short   2个字节; Int   4个字节;   long    8个字节

字符类型:char    2个字节

浮点类型:float    4个字节; double  8个字节

布尔类型:boolean  1true/false

 整数类型:没有小数部分的数值,可以是负数

 整数类型有三种表示方式:十进制、八进制、十六进制,默认为十进制,八进制以0开头,十六进制以0x0X开头


如果直接将一个较小的整数常量(在byteshort范围内的数据)赋给一个byteshort型的变量,系统自动将该值当做byteshort型变量来处理,如果系统使用一个巨大的数据,超过了int的范围,系统不会自动将该数据当long类型处理,要想当成long类型处理必须在后面添加Ll;        

一般情况下int最常用,因此java中一个整形变量默认为int类型。长整形后面需要加一个后缀Lleg long a = 1000L;

一般情况下double最常用,系统中浮点类型数据默认为double; float型的数值有一个后缀Ff,没有后缀的浮点数默认为double类型。(浮点类型:表示有小数部分的数值);

字符类型:用于表示单个字符,字符类型的值必须使用单引号括起来。

字符类型的值有三种表示形式:

1.   直接通过单个字符类指定值:eg: char a = ‘男’;

2.   通过转义字符表示特殊字符常量:‘\n’、‘\t’、‘\”’……

3.   直接使用unicode值来表示字符类型的值:格式为’\uxxxx’其中xxxx表示十六进制的整数。Eg: char a = ‘\u9999’; 也是表示‘香‘

(2)引用数据类型(复杂数据类型)

数组:数组是所有编程语言只用一种常用的数据结构,它用来存储多个相同类型的数据。

JAVA中的数组要求数组中元素的类型一致。一旦数组初始化完成,数组在内存中所占用的空间被固定下来,因此数组的长度是不可变的。

★数组的定义

       类型[]数组名;//常用       int[] a; double[] b;char[] c

        类型数组名[];// int a[]

★数组的初始化

       ◆静态初始化

                 初始化时由程序员显示的指定每个数组元素的初始值,由系统决定数组的长度。

                 eg:

                        int[ ]a = {1,2,3,4,5}; //简化写法

◆动态初始化

初始化时程序员只指定数组的长度,而不指定数组中元素的值,系统自动给数组分配初始值。

eg:

        int[] a = new int[5];

★访问数组元素

数组中每个元素都有一个下标,下标从0开始:访问数组元素可以根据数组下标。

                         eg:

                                  int[ ]a = {55,66,85,32,75};

                                  55------------ a[0]

                                  66------------ a[1]

                                  85------------ a[2]

                                  32------------ a[3]

                                  75------------ a[4]

类:类是具有相同属性和行为的一组对象的集合与抽象。(系统定义的类,用户自定义的类)

类的语法

[修饰符] class 类名 [继承][接口]{

        0—n个属性;

         0---n个方法;

}


接口:接口就是一组对类的要求,它反映了一组没有内在联系、不相关的类之间的通讯的协议
接口支持多继承。

接口的特点

1.     一个类只能直接继承一个父类,但是可以实现多个接口。

2.     接口不能实例化、接口没有构造方法。

3.     接口中的方法全部都是抽象方法,常量全部都是静态常量。

4.     当一个类实现某个接口时,它必须实现该类中的所有的抽象方法,除非这个类定义为抽象类。

接口的语法

[访问控制符] interface接口名{

                        全局常量;

                         抽象方法;

        }

补充:

●  类实现多个接口

class 类名 implements 接口1,接口2……{

  .....

}

●  类实现接口同时又继承类

class 类名 extends 父类 implements 接口1,接口2……{

  .......

}

●  接口继承接口(接口只能继承接口,不可以继承类。而且接口继承接口使用extends,而且接口可以继承多个接口)

4.变量的声明,初始化,作用域,常量

▼变量声明

                 eg:

                         int days;//天数

                         int a,b;

▼初始化

                 eg

                         days = 25;

                         a = 10;

                         b = 10;

        可以将变量声明和初始化合并成一步完成

                         int days = 25;

                         int age = 18;

                         int a=10,b=10;

        注意:声明了一个变量后,一定要初始化才可以使用改变量。

                 eg:

                         public class Test2{

                                 publicstatic void main(String[] args){

                                          int a;

                                          System.out.println(a); //此处报错 (可能尚未初始化变量 a)

                                 }

}

 

▼动态初始化

                 eg int a = 10;

                          int b = a;

        整型变量b的初始化是将a的值赋给了b,这就是动态初始化。

        注意如果a没有初始化,就不允许用a作为其他变量的初始化值。

                 egint a;

                     int b = a;//此处报错

▼常量:不能改变的量,值是固定的。

public class Test2{

     public staticvoid main(String[] args){

             int a= 10;

              finalint MONTHS = 12;//常量 (常量名一般大写,便于和普通变量区分)

             System.out.println("a="+a+",MONTHS ="+ MONTHS);

             a =20;

             MONTHS= 15;//报错无法为最终变量 months指定值(常量的值不可以改变)

             System.out.println("a="+a+",MONTHS ="+ MONTHS);

     }

}

 

▼变量作用域

块是用花括号扩起来的任意数量的Java语句,块可以嵌套在其它的块中

Java中块决定了变量的作用域。

eg:

             public class Test2{

                      public static voidmain(String[] args){

                              int a;

                              ....

                              {

                                       ....

                                      intb;

                                       ....

                              }//b的作用范围到此为止

                      }//a的作用范围到此为止

}


5.数据类型转换

Java中八中基本数据类型除了boolean类型外,都可以进行相互转换,有两种转换方式:

自动类型转换

强制类型转换

 

▼自动类型转换
      
条件:

类型兼容

目标类型的范围大于源类型的范围

  byte ---short---int---long---float---double

char---int---long---float---double

▼强制类型转换(可能导致精度丢失或错误结果,所以不可随意滥用。)

条件:

将大的数值类型转型为较小数值类型;最终值不能超出较小值数据类型范围

eg:

inta = 12;

byteb = (byte)a; //强制类型转换

补充:

表达式中数据类型的自动提升

当使用二元运算符对两个值进行运算时,两个操作数会转换成通用类型。

● 如果两个操作数中有一个是double类型,则另一个将会转换成double型;

● 如果两个操作数中有一个是float类型,则另一个将会转换成float型;

● 如果两个操作数中有一个是long类型,则另一个将会转换成long型;

否则,两个操作数都转换成int型。

6. 运算符

▼算术运算符

       +-*/%(取模、取余)

▼自增自减运算符

++(自增)--(自减)

++在前表示先让做增加1,在做运算;++在后表示先做运算,在增加1

▼关系运算符

       >>=<<===!=

注意:==是判断相等,得到布尔值 truefalse

        =是赋值

▼逻辑运算符

&&(与)、||(或)、!(非)

▼位运算符

&()|(或)、^(异或)

位运算将两个数转化成二进制再进行运算,
&
按位求与,两位都为1才为1

| 按位求或,两位有一个为1就为1

^ 异或,两位不同才为1,两位相同就为0

▼赋值运算符

=

注意:==是判断相等,得到布尔值 truefalse

        =是赋值