Java基本语法

一,标识符

由字母,数字,下划线,美元符组成,但必须以字母,下划线或美元符开头。Java语言使用Unicode国际标准字符集,故标识符中的字母可以还可能是汉字及其他国语。

汉字问题尚未解决

约定 的标识符命名风格:

(1)_和$不作为变量名,方法名的开头,因为这两个字符对于内部类具有特殊意义;

(2)变量名,方法名首单词小写,其余单词只有首字母大写;而接口名,类名首单词第一个字母大写;

(3)常量名完全大写,并且用_作为标识符中各个单词的分隔符;

(4)方法名应使用动词,类名与接口名使用名词;

语句以;为分隔符。

文档注释符/**       */表示其之间的文本将自动包含在用Javadoc命令生成的HTML文档中。

二,基本数据类型(8种)

整型:byte,short,int ,long

浮点型:float,double

char    boolean

引用数据类型:用户自定义新的数据类型。(类,接口,数组)

基于面向对象的概念,以类和接口的形式定义新的数据类型。

三,变量和常量

二进制常量用0b或0B开头。长整型常量末尾加L或l。整型常量默认类型是int。

一般浮点常量用F或f做后缀;双精度浮点常量用带D或d或不加后缀的数值表示。

字符常量用单引号括起来,Java采用16位的字符集,所有可见的ASCII字符都可以作为常量,此外,字符常量还可以是转义符。

字符串常量用双引号括起来,可以包含转义符和八进制十六进制符号。

Java要求一个字符串一行内写完,否则使用字符串连接操作符+把两个或更多个字符串常量串接在一起。

Java中字符串是作为对象实现的。

引用类型变量的值是指向内存空间的地址。所指向的内存空间存放着变量所表示的一个值或一组值。

1,两种类型变量声明不同

  基本类型变量声明时,系统直接给它分配了数据存储空间,因此程序可以直接操作该空间对变量进行初始化。

  int a;    声明变量a的同时系统给其分配了存储空间。  a=10;

  引用类型变量在声明时,系统只给它分配一个引用空间,而数据空间未分配。因此引用类型变量声明后不能直接引用,必须通过实例化开辟数据空间,才能对变量所指向的对象进行访问。

 如:MyPoint p;       给p变量分配一个引用空间

       p = new MyPoint();   给变量p开辟数据空间,执行赋值操作,将数据空间的首地址存入变量p中。

2,变量赋值

   基本类型变量之间的赋值是将一个变量存储空间的数值复制到另一个变量的存储空间。

  引用类型变量之间的赋值是引用(地址)的复制。

3,变量的作用域

  (1)局部变量。在一个方法或{}内定义的变量,也称自动变量,临时变量或堆栈变量。其作用域是所在方法或代码块,当程序执行流进入所在方法或代码块时创建,在方法或代码块退出时消亡。

 (2)方法参数。定义了方法调用时传递的参数,其作用域就是所在的方法。

 (3)异常处理参数。catch语句块的入口参数。这种参数的作用域就是catch语句后由{}表示的语句块。

 (4)类成员变量。在方法外声明且属于一个类的定义体的变量。作用域是整个类。两种类型。第一种是用static声明的,该变量在类加载时创建并且只要所属的类存在,该变量就一直存在。声明中没有static的为实例变量。实例变量在调用类的构造方法(new XXX())创建实例对象时创建,并且只要有引用指向变量所属的对象,该变量就存在。

4,变量的初始化

当创建一个对象时,对象所包含的实例变量在存储空间分配后就由系统自动初始化(类成员变量)。而局部变量必须在使用前由用户显式地赋初值进行初始化。

四,运算符与表达式

Java中取余运算可以应用于浮点型和整型。“+”运算还可以用来连接字符串。

Java中的任何类型都可以使用==或!=来判断是否相等。但只有整数,浮点数和字符操作数可以比较大小。

Java中使用补码表示二进制数。

>>带符号右移,最高位用原来高位的值填充;

>>>无符号右移,无论被移位的数是正还是负,最高位都用0填充。

在赋值运算符两边的类型不一致,若左边类型兼容或匹配右边表达式的类型,则右边表达式的类型被转换为与左边变量相同的类型后赋值为左边变量,否则需要强制类型转换。

对象运算符instanceof用来测定一个对象是否是某一个指定类或其子类的实例,如果是则返回true。

四,数据类型转换

自动转换(隐式转换)

当把一种数据类型赋给另一种类型的变量时,如果两种类型是兼容的,且目标类型表示的范围比源类型的范围大,那么就会进行自动类型转换。

byte->short->char->int->long->float->double

基本数据类型与引用类型变量之间 不能相互转换。

五,程序控制语句

if语句,switch语句同C。

每个case判断都只负责指明流程分支的入口点,而不负责指定分支的出口点。

六,循环语句

1,while,do while,for语句同C。

    for语句特殊用法:用于遍历数组或集合中的每一个元素。

    for(数据类型   标识符 :数组/集合名){

        循环体;

    }

2,带标签的continue语句

   结束由标签所指外层循环的当前循环,开始执行该循环的下一次循环。标签名通常定义在程序中外层循环语句的前面,用来表示该循环结构。

如:next:for(i=2;i<100;i++){
               for(j=2;j<=i/2;j++)
                {
                   if(i%j==0)
                        continue next;
                 }
                if(j>i/2)
                 .....
}   

该例子查找1到100之间的素数,若找到整数i的一个因子j,则说明该i不是素数。程序将跳过本次循环剩余的语句直接执行next标签的外循环的下一次循环,检查下一个数是否是素数。

3,带标签的break语句

结束由标签指定的循环的执行,程序进入该循环后面的语句。

如:
search:for(      )
          for(           )
              break search;

七,数组

数组是引用型变量,一组相同类型的数据可以通过一个共同的变量名来引用。

使用数组必须通过数组声明,创建和初始化三个步骤。

创建数组就是为数组分配存储空间。

1,一维数组的声明

    int a[];      int[]  a;

声明数组仅仅是为数组指定了数组名和数组元素的类型,并给该数组变量分配了一个可用来引用该数组的引用空间,并没有为数组元素分配实际的存储空间。注意:声明数组时不能指定数组的长度。

2,一维数组的创建

分配内存。Java利用new运算符或静态初始化数组来为数组分配存储空间。

(1)数组名=new 数据类型【数组长度】;数组名已声明

声明和创建一条语句完成:int[] a=new int[10];

(2)静态初始化创建数组是指在声明数组的同时给数组的每一个元素赋一个初始值。

int [] a={1,3,4,5};

说明:因为数组属于引用类型,所以一维数组的声明也可以采用“int [] a=null”的形式。赋值为null表示还没有指向任何存储空间。

Java为数组设置了一个表示数组元素个数的特定变量length,它作为数组的一部分存储起来。可用a.length来获取。

创建数组后,系统会为每个数组元素进行默认初始化。

(Java数组类似C,数组名为首地址,一片连续空间,声明时数组名不指向任何空间,创建后指向特定地址)

3,初始化数组

基本数据类型可直接赋初值,类对象要调用其类的构造方法。

Point[] p=new Point[4];
for(int j=0;j<p.length;j++){
     p[j]=new Point(j,j);
     }

4,多维数组

声明 int [][] a;

创建:a=new int[3][3];

不规则数组的创建:只给定高维的长度而不给出最后一维的长度。a=new int[3][];根据需要分别为每行创建不同的存储空间。

如:int[][]p=new int[2][];
    p[0]=new int [2];
    p[1]=new int [3];
    p[2]=new int [4]; 

静态初始化创建多维数组

int [][]a={{1,2},{2},{1,2,3}};

不规则的多维数组,先为每一维分配存储空间,然后再进行赋值。

5,数组的复制

数组变量是引用类型,因此它们之间的赋值只是数组首地址的复制,不能实现数组之间数据的复制。

int[] a=new int [3];
a[0]=1;  a[1]=2;   a[2]=3;
int[] b;
b=a; 

此时b和a指向同一片地址,通过b改变数组元素的值,a的值也会变化。

d=new int[3];
System.arraycopy(a,0,b,0,3);
 
使用系统类System的arraycopy方法完成两个数组之间的数据复制:System.arraycopy(源数组,复制源数组的起始位置,目标数组,目标数组中存放复制数据的起始位置,复制数据的个数)

另一种情况:新建数组d并使d=a,那么对d 修改也是对a修改。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值