java语法基础

java语法基础

字符编码集

Unicode码介绍

         Java中使用的是统一码(Unicode)。

Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。1990年开始研发,1994年正式公布。

Unicode用16位表示,比ASCII码字符集要大的多。

汉字字符集

GB2312-80

中华人民共和国国家汉字信息交换用编码,全称《信息交换用汉字编码字符集——基本集》,国家标准总局发布,198151实施,收录简化汉字及符号、字母、日文假名等共7445个图形字符,其中汉字占6763个

GBK

全国信息技术化技术委员会于1995121《汉字内码扩展规范》,GBK共收入21886个汉字和图形符号

BIG5

1983年10月,台湾国家科学委员会、教育部国语推行委员会、中央标准局、行政院共同制定了《通用汉字标准交换码》,后经修订于1992年5月公布,更名为《中文标准交换码》,BIG5收录13461个汉字和符号

为什么要使用Unicode码?

Java中使用的不同字符集编码的内码定义不一样

汉字              GBK               BIG5       

一               D2BB                A440

标识符

组成

1. 只能以以下字符组成:

a)      字母(A~Z、a~z)

b)      特殊符号($、_)

c)      数字(0~9)

2. 第一个字母不能为数字

3. 不能为关键字

4. 区分大小写

 

命名规则

         类与接口:首字母大写,其余子首字母大写,其他字母都小写。

       变量:首字母小写,其余子首字母大写,其他全部小写。

       方法名:首字母小写,其余字母首字母大写,其他全部小写。

       常量:全部大写,字与字之间用_分割。

关键字

if            long             throw         public          strictfp

do         case           while           return         abstract   

for        null            short           throws        continue

int        char           super        finally              transient        

try         void           break          default      interface

new     float          static         private        protected

this      class      native           volatile      instanceof

goto     final       double        boolean    implements

byte      const     import           extends    synchronized

else       catch      switch           package

分隔符

         空白符:出现在任意两个字之间,一个等同多个

              public static void main

              public    static  void 

       分号:每个语句的结束标志。for循环条件表达式中也使用到

              System.out.println(“Hello”);

       逗号:用于分隔定义相同类型的变量或对象

              char c,c1,ch;

       冒号:用做语句标点和语句之间的分隔符。

              f=a>b?c+d:c-d;

       {}号:界定类、方法、复合语句的作用域。

              for(……){……}

注释

         单行注释://

       多行注释:/*………………….*/

       文档注释:/**……………………..*/ Java特有的一种注释语句,使用javadoc工具从源代码和文档注释中将信息取出,然后转换为HTML文件

进制

         二进制:00001010

       八进制:0754

       十进制1254

       十六进制0x1254

进制转换

         十进制转换成二进制:除二取余

              106 = 1101010

       二进制转成十进制:

1101010 = 106

       二进制与八进制之间的转换:

              1101010=0152

       二进制与十六进制之间的转换:

              1101010=0x6a

负数的进制表示形式

         原码      01101010        11101010

              正数的原码是其本身,负数的原码还是其本身

         反码     01101010        10010101

              正数的反码是其原码,负数的反码是其原码的每一位求反(符号位除外)

         补码     01101010        10010110

              正数的补码是其原码,负数的补码是其反码+1

数据类型

       Java语言的数据类型分为两大类:

              基本数据类型:8种

              复合数据类型:3种

      基本数据类型

                   整数类型

                     byte:8位,一个字节

                     short:16位,两个字节

                     int:32位,四个字节

                     long:64位,八个字节

       实数类型:

              float:单精度浮点数              32位   4个字节

              double:双精度浮点数   64位   8个字节

       字符型:

              char:字符型        16位   2个字节

              boolean:布尔类型   8位      1个字节

复合数据类型

       类(class)

       接口(interface)

       数组

常量

      整型常量

         表示所有的整数,常用八进制,十进制,十六进制来表示

       整型常量有正负之分

       Long型常量必须在后面加L或l

      实型常量

         表示所有的浮点数(小数)

       实型常量分为两种

              单精度实数(float),数字后面加字符f(或F)

              双精度实数(double),数字后面加字符d(或D或省略)

       实型常量如无字母标识,默认为双精度实数

       实型常量表示形式分两种

              十进制:由数字与小数点组成 0. 12 ,.12,12.,12.0

              科学计数法:1.23e3       123E1  12.3e2 0.123E4     -2E

                  

      布尔型常量

       true             false

      字符型常量

         用单引号括起来的单个字符

              ‘a’         ‘A’          ‘@’              ‘’//错误

       转义/特殊字符

‘已经被定义为描述字符的范围,表示字符’时,要使用转义字符的形式,还有其他多种字符需要使用转义字符

       \’           \”          \\

       \n          \r           \b          \t

\t制表占位符,可以用于描述成1到8个空格

\b退格键

\r光标移动到行首

\n光标移动到下一行(回车)

      字符串常量

                使用双引号括起来的0到多个字符

                     “river”        “class”         “”

              字符串中如需表示引号字符,使用转义字符

                    

      null 常量

                   null常量描述了一个不存在的指向

变量

         变量描述的是内存中对应的存储区域

      变量的定义规则

              数据类型 变量名;

              数据类型  变量名1,变量名2;

              数据类型 变量名=值;

              数据类型 变量名1 = 值1, 变量名2=值2….;

              数据类型  变量名1, 变量名2=值….;

                     int a; int a,b; int a=1,b;inta=1,b=1;

变量作用域

         变量的作用域即从某个变量定义位置开始,到其所在的大括号结束处。

数据类型转换

         高类型与低类型

byte                                    

short    .                                                            

int    .                                                                 

long    .                                                              

float    .                           float与double类型转换成

double                                                 时只取整数部分

数据类型转换总结:

              发生场景:

1. 赋值

a)  如果等号右边的式子只用常量,则在不超过左边数据范围的情况下,类型不同,会发生自动类型转换

b)  如果等号右边的式子类型比左边式子的类型低,发生自动类型转换

c)  如果等号右边的式子类型比左边的类型高,必须使用强制类型转换

d)  实型转整型时,必须使用强制类型转换,转换结果只取实型的整数部分

2. 二元运算

a)  两个操作数类型不同时,低类型转高类型,然后再进行运算

b)  运算中如果有变量参与运算,运算的结果如果类型不足int,将自动升级为int

例子

<span style="white-space:pre">		</span>int a ;
                   a = (int)1000000000000000000L;//丢失精度,强制类型转换的数据有可能与原始数据没有任何关系
                   System.out.println(a);
                   long l= 100;      //自动类型转换
                   System.out.println(l);
 
 
                   byte b = 1;
                   byte bb =(byte) (b + 1);//b先提升至int
                   System.out.println(bb);
 
                   byte a = 1;
                   int b = 2;
                   long c = (byte)(a + b);//a+b的结果为int
                   System.out.println(c);
 
                   byte b;
                   b = 1 + 2;//右边的式子没有超过左边类型表示的范围
                   System.out.println(b);
*/
                   byte b;
                   byte bb = 126;
                   b = bb+1; //有变量参与运算,bb+1为int
                   System.out.println(b);
 
                   byte b = 1;
                   short c = 2;
                   short res = b + c;//b + c 的结果为int
                   System.out.println(res);
 
                   float f = 1;
                   System.out.println(f);//整型数据可以自动转换成实型数据
 
                   long a =(long)12.53e1f;//125.3
 
         char与int
              char型数据每个值都有一个int型的表示格式
char c = ‘a’;                 
c的值是‘a’,在参与算术时,‘a’的值取其unicode码值
char c = ‘a’;
System.out.println(c);
System.out.println(c+0);
System.out.println(c+‘b’);

整数运算的临界值

当整数进行算术运算时,如果超过了边界值将自动截断超出部分,只保留对应数据范围内的数据,此数据将失去原始值所表示的真实性

byte b = 127;

         b++;

         System.out.println(b);//-128

int long short byte 达到最大值时循环

运算符

算术运算符

         +            -             *            /            %           ++         --

字符串连接运算符+

              

System.out.println(1+2+3+”a”+1+2+3);//6a123
System.out.println(1+2+3+’a’+1+2+3);//109
System.out.println('a'+"b"+'c');//abc

自增自减运算符 ++         --

       /*int a = 1;

       a++;

       System.out.println(a); *///2

       /*int a = 1;

++a;

System.out.println(a);*///2

System.out.println(a++);//1

System.out.println(++a);//2

 

int a=1;

int b=2;

System.out.println(a+b++);//3

System.out.println(a++ + b++);//3

System.out.println(++a + ++b);//5

 

System.out.println(a++ + a++ + a++);//6

分析:

                     式子            a            整个式子

       a++              1                2            1 + a++ + a++

       a++              2                3            1+2 + a++

       a++              3                3            1+2+3=6

System.out.println(a++ + --a + ++a + a--);//1+1+2+2=6       a=1

关系运算符

       用于比较两个值之间的关系,运算结果为布尔值的true或false

java中=号用于做赋值运算,而且要求等号左边必须是一个变量,右边必须是一个值

大于     >     3>4//false

大于等于         >=         3>=4//false

小于     <     3<4//true

小于等于         <=         3<=4//true

等于     ==         3==4//false

不等于       !=          3!=4//true

==号两边只要类型相同或相兼容,就可以进行运算

System.out.println(‘a’==97);

逻辑运算符

       &(&&):描述一种同时成立的情况,&符号两边的布尔值同时为true则为true             同真则真

&&与&功能相同,不同之处在于&&如果断定左边式子为false,则右边的式子就不再判断。&则左右两边式子的真假值都要判断。在进行运算过程中,&&要对前面的式子进行一次检测,因此,在整个式子运行过程中,会比&多进行一次判定。

        |(||)描述两者有一个成立就成立的情况,布尔值 或者 布尔值

或。符号两边的布尔值同时为false整体为false。同假则假。||与|功能相同,不同之处在于||如果断定左边式子为true,则右边的式子就不再判断。|则左右两边式子的真假值都要判断。在进行运算过程中,||要对前面的式子进行一次检测,因此,在整个式子运行过程中,会比|多进行一次判定。

       非 !      非真即假,非假即真

       异或 :^      java中描述不能同时成立的关系使用^布尔值      异或  布尔值。异或 ^ :描述二者不能同时成立的情况,^符号两边的布尔值相同为false,不同为true。相同为假,不同为真。

移位运算符

       对操作数的二进制表示形式进行左右移动,移位运算发生在整型变量或常量间

       移位运算共包含三种运算

              左移            <<

<<运算,每左移1位,相当于在原始数的基础上乘2,每次左移后,原数右侧补0

int a = 101;// /int型变量a,a左移b,实际上移动的位置应该是a<<(b%32)

System.out.println(a<<1);

System.out.println(a<<33);

              右移            >>

>>运算,每右移1位,相当于在原始数的基础上/2, 每次右移后,正数左侧补0,负数左侧补1(补码基础上)

              无符号右移    >>>

                     每次右移后,左侧补0(补码基础上)

                            int a = -102;

                            System.out.println(a>>>1);

条件运算符

                     条件表达式?值1:值2

                     条件表达式:需要一个结果为true或false的式子

                     int a = 11;

                     int b = 2;

                     int c = a >b ? a :b;

                    

 

                     int a = 10;

                     doubled = 9.7;

                     System.out.println(a > d ? a : d );//10.0

 

                     System.out.println( true ?false : true ? false : true );//false

                     System.out.println(3 > 2? 1 : true );//1

                     int a = 3 > 2 ? 1 : true;

                     System.out.println(3 > 2? 1 : true );//编译失败

      位运算符

              位运算操作的是整型数字(二进制格式),位运算可以对常量或变量进行: ~ & | ^

       按位取反         ~     ~15

按位与              &    13&21

按位或              |     33|15

按位异或         ^     171^14

/*按位与+按位或应用

让你给我描述一个人的信息,全部是这种对立状态的数据3个*/

              /*

              booleangender = true;

              booleanmember1 = true;

              booleanpart = true;

              32个byte保存32个值,需要32byte空间

              0000-00000000-0000 0000-0000 0000-0000

              右向左第一位代表性别

              0000-00000000-0000 0000-0000 0000-0001  男

              0000-00000000-0000 0000-0000 0000-0000  女

              右向左第二位代表是不是华侨

              0000-00000000-0000 0000-0000 0000-0011  男华侨

              0000-00000000-0000 0000-0000 0000-0001  男不是华侨

              某人的个人信息

              0010-11011111-0010 1101-0000 0001-1111  ->int

             

              ?取性别

              0010-11011111-0010 1101-0000 0001-1111 & 1 大于0男 等于0女

              做手术

              0010-11011111-0010 1101-0000 0001-1111

              0010-11011111-0010 1101-0000 0001-1111 & 1111111111111111111111111

              */

              //交换两个整形变量的值

              inta = 10;

              intb = 20;

              //1.设计一个第三变量完成

              intc = a;

              a =b;

              b =c;

              //2.不能创建第三变量

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

              a =a + b;

              b =a - b;

              a =a - b;

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

              //3.位运算^

              System.out.println(44^101);

              System.out.println(73^44);

              System.out.println(73^101);

              //System.out.println(101^44^44);//101

              a =a^b;

              b =a^b;// a^b^b

              a =a^b;// a^ a^b

              */

表达式

使用运算符和括号将操作数连接起来求值的式子

操作数可以是变量、常量或方法(后期)

表达式类型

算术表达式

       a+b

关系表达式

       a>b

逻辑表达式

       a&&b

赋值表达式

       a =2;

复合赋值运算

       +=      -=        *=       /=       %=

<<=     >>=       >>>=    &= |=

       a+=b  等同于 a = a + b  //可以理解成这样的计算

       int a = 1;

a += a++ + (a=1);

分析:

a = a + ( a++ + (a=1))

a = 1 + ( a++ + (a=1))

a = 1 + ( 1         +     (a=1))                                            a= 2

a = 1 + ( 1         +     a);                                                   a= 1

a = 1 + ( 1         +     1);

a = 3;



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值