首页 > 编程 > Java > 正文

Java基础学习-----第二章Java基本语法

2019-11-08 02:26:52
字体:
来源:转载
供稿:网友
第二章  java基本语法目录  关键字   保留字  标识符   命名规范  变量   数据类型    运算符关键字的定义和特点    定义: 被Java语言富裕特殊含义,用做专门用途的字符串(单词)    特点: 关键字中所有字母都为小写

Java保留字: 现有Java版本尚未使用,但以后版本可能会作为关键字使用。             byValue 、cast 、future、generic、inner、Operator、outer、rest、var、             goto、const标识符:    java 对各中变量、方法和类等要素命名时使用的字符序列称为标识符    凡是自己可以起名字的地方都叫标识符。定义合法标识符的规则:         由26个英文字母大小写,数字,美元符号,下划线组成。         数字不可以开头         不可以使用关键字和保留字,但能包含关键字和保留字         Java中严格区分大小写,长度无限制         标识符不能包含空格注意: 起名字的时候,要做到见名之意Java中的名称命名规范  包名:多单词组成时所有字母都小写:xxyyzz  类名接口名:多单词组成时,所有单词的首字母大写:XxYyZz  变量名和函数名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:                   xxYyZz  常量名:所有字母都大写。 多单词时每个单词用下划线链接: xxx_yyy_zzz变量 1>变量的定义:变量就是内存中的一块空间,这块空间有 “类型”“名字”“值”。 2>关于变量的相关的问题   ①变量可以重新赋值,但不能重复声明eg:public class VarTest01{   public static void main(String[] args){      //申请一块int类型的空间,起名为i ,并赋值10            int i = 10;        System.out.PRintln(i);      //重新赋值           i = 100;        System.out.println(i);          int i = 200;//错误的,不能重复声明      }   }    ②在同一个域中,变量名不能重复。eg:public class VarTest02{   public static void main(String[] args){      // 变量名都是b  ,错误的代码        int b = 10;        short b = 20;       }   }        ③ Java语言中的变量必须先声明,在赋值,才能使用eg:public class VarTest03{   public static void main(String[] args){    //声明三个变量 i1 i2 i3 ,类型都是int类型,i1 i2  两个变量没有赋值,只有i3变脸赋值      int i1 ,i2, i3=456;      System.out.println(i1);//i1没有赋值不能访问      System.out.println(i3);//这个可以访问      }   }     ④变量的作用域: 有效范围,作用范围  出了大括号就不认识了3>变量的分类  变量根据出现的位置可以分两种:      局部变量: 在方法体中声明的变量叫做局部变量,包括形式参数列表      成员变量: 在类体中,方法之外声明的变量统称为成员变量eg :   public class VarTest04{           //成员变量              int i = 10 ;           //成员变量              int m;//成员变量系统自动赋值 ,值为0       public void m1(int m){//m也是局部变量                int k = 10;//局部变量   }        public void m2{                       System.out.println(m);//0    }       public static void main(){             VarTest04 vt = new VarTest04();               vt.m2();       }    } 数据类型java总共有两种数据类型,主要有基本数据类型和引用数据类型,基本数据类型有8种,引用数据类型有3中     基本数据类型              数值型           整数型           浮点型        字符类型                布尔类型       引用数据类型                 数组                   类          接口关于Java语言中的整型数据      byte     1byte(8bite)-128--127      short    2byte      int      4byte      long     8bytepublic class DataTypeTest01{     public  static void main(String[] args){           //将一个int类型100字面值赋给i1 变量             int i1 = 100;           //将一个int类型的123字面值赋值给long类型的L1           //int类型的容量小于long类型           //以下程序存在类型转换,只不过叫“自动类型转换”              long L1 = 123;                       //由于123后面有一个L ,所以上来就会把123看做long类型           //所以以下程序不存在类型转换,只是一个普通的赋值运算                 long L2 = 132L           //可以(int类型-->long类型,自动类型转换)                 long L3 = 2147483647           //程序将2147483648看做 int类型,但是这个数据本身已经超过int的取值范围               long L4 = 2147483648;//错误           改成:long L4 = 2147483648L;        }    }      public class DataTypeTest02{    public static void main(String[] args){                  //将long类型转换成int类型,不能自动类型转换               int  i1 = 1L;//错误          // 需要强制类型转换          // 需要加强制类型转换符          // 以下的程序肃然编译通过了,但是程序在运行阶段可能损失精度,所以一定要谨慎使用,              int i1 = (int)1L;//大容量向小容量转换,需要强制类型转换               //记忆一个规则,如果整数没有超过byte、short、char、的取值范围,可以直接将这个整数赋值给byte、short、char。                 byte b1 = 127;//true                 byte b2 = 128;//error                             short s1 =32767;//true                 short s2 = 32768;//error                  char c1 = 97;//true                  char c2 = 65536;//error               }   }关于Java中浮点型数据    float   4个字节  单精度    double  8个字节  双精度注意:因为在内存中空间是有限的,现实生活中存在无限循环的数等无限的资源,因此涉及到      精度的问题public class DataTypeTest03{    public static void main(String[] args){           double d1 = 1.2;//小数默认是double类型                      //强制类型转换              float f1 = (float)3.2;            //自动赋值运算               float f2 = 3.2f;     }   }关于Java中布尔类型数据    1 boolean类型的数据只有两个值:true 、 false ,没有1和0    2 Boolean类型的数据主要用在逻辑运算和条件控制语句中public class DataTypeTest04{      public static void main(String[] args){             boolean sex = false;                if(sex){                System.out.println("男");          }else{                System.out.println("女");             }      }   }混合数据类型的转换     注意的问题:

         在Java中基本类型可以相互转换,Boolean类型比较特殊不可以转换成其他类型

         转换分为默认转换和强制转换:              默认转换:容量小的类型会默认转换为容量大的 类型                   byte-->short-->int-->long-->float-->double                           char                   byte short char  之间计算不会相互转换,首先先转换成int(这里是系统已经默认转换成int啦,我们不需要自己去转换)              强制转换:                   将容量大的类型转换成容量小的类型,需要进行强制类型转换                   注意:只要不超过范围可以将整型值直接赋值给byte、short、char在多种类型混合运算过程中,首先先将所有数据转换成容量最大的那种,再运算eg: byte b1= 10;    short s1 =20;  int i1 = b1+s1;//编译可以通过,因为(b1+s1)JVM 知道结果是int类型       byte b2 = 10;     short s2 = 20;   byte b3 = b2 + s2;//编译不通过,Java程序分编译期和运行期,编译阶段只是知道                       (b2+s2)的结果是int类型,int类型无法直接赋值给byte类型    short  s = 5;     s = s-2; //编译不能通过,(s-2)结果是int类型,int类型不能赋值给short类型。    short  s = 5;     s = (short)(s-2);//可以

转换实例1)基本类型向类类型转换正向转换:通过类包装器来new出一个新的类类型的变量Integer a= new Integer(2);反向转换:通过类包装器来转换int b=a.intValue();通过类包装器——>基本数据类型eg1:int i=Integer.parseInt(“123”)说明:此方法只能适用于字符串转化成整型变量

eg2: float f=Float.valueOf(“123”).floatValue()说明:上例是将一个字符串转化成一个Float对象,然后再调用这个对象的floatValue()方法返回其对应的float数值。

eg3: boolean b=Boolean.valueOf(“123”).booleanValue()说明:上例是将一个字符串转化成一个Boolean对象,然后再调用这个对象的booleanValue()方法返回其对应的boolean数值。

eg4:double d=Double.valueOf(“123”).doubleValue()说明:上例是将一个字符串转化成一个Double对象,然后再调用这个对象的doubleValue()方法返回其对应的double数值。

eg5: long l=Long.valueOf(“123”).longValue()说明:上例是将一个字符串转化成一个Long对象,然后再调用这个对象的longValue()方法返回其对应的long数值。

eg6: char=Character.valueOf(“123”).charValue()说明:上例是将一个字符串转化成一个Character对象,然后再调用这个对象的charValue()方法返回其对应的char数值。

2)基本类型向字符串的转换正向转换:如下:System.out.println(""+2+3);// “""”把2转成字符串操作;System.out.println(2+3);   // 不存在转换。System.out.println(2+3+"");// 前两个数值相加后,被“""”转成字符串。System.out.println(2+""+3);// 同第一个。输出显示为:23,5,5,233)类类型向字符串转换正向转换:因为每个类都是object类的子类,而所有的object类都有一个toString()函数,所以通过toString()函数来转换即可反向转换:通过类包装器new出一个新的类类型的变量

eg1: int i=Integer.valueOf(“123”).intValue()说明:上例是将一个字符串转化成一个Integer对象,然后再调用这个对象的intValue()方法返回其对应的int数值。

eg2: float f=Float.valueOf(“123”).floatValue()说明:上例是将一个字符串转化成一个Float对象,然后再调用这个对象的floatValue()方法返回其对应的float数值。

eg3: boolean b=Boolean.valueOf(“123”).booleanValue()说明:上例是将一个字符串转化成一个Boolean对象,然后再调用这个对象的booleanValue()方法返回其对应的boolean数值。

eg4:double d=Double.valueOf(“123”).doubleValue()说明:上例是将一个字符串转化成一个Double对象,然后再调用这个对象的doubleValue()方法返回其对应的double数值。

eg5: long l=Long.valueOf(“123”).longValue()说明:上例是将一个字符串转化成一个Long对象,然后再调用这个对象的longValue()方法返回其对应的long数值。

eg6: char=Character.valueOf(“123”).charValue()说明:上例是将一个字符串转化成一个Character对象,然后再调用这个对象的charValue()方法返回其对应的char数值。

 

 

运算符

 

算术运算符     关系运算符   布尔运算符   位运算符    赋值运算符   字符串运算符   条件运算符    其他运算符

 

算术运算符

注意的问题:

   如果对负数取模,可以把模数的负号忽略不计,如:5% -2=1.但被模数是负数就另当别论    对于除号“/”,它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。

 

 

关系运算符

  >    大于

  >=   大于等于

  <    小于

  <=   小于等于

  ==    判断是否相等

  !=   不等于

 

  关系运算符的运算结果一定是Boolean类型

 

布尔运算符(逻辑运算符)

 

     &   逻辑与  两边都是true,结果是true

     |   逻辑或   一边是true,结果就是true

     !  逻辑非   取反!true---> FALSE

      ^  逻辑异或   两边只要是不一致就是true

    &&   短路与    用法和&一样

    ||   短路或    用法和|一样

布尔运算符两边必须是布尔类型,整个表达式的运算结果也是一个布尔类型

 

 逻辑运算符注意的问题

     逻辑运算符用于连接布尔型表达式,在Java中不可以写成3<x<6.应该写成x>3 && x<6;

    & 和 &&的区别:

            但 &时,左边无论真假,右边都进行运算

            双 &&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算

     双或时 左边为真,右边不参与运算。左边为假时,右边才参与运算

 

 赋值运算符

      基本的赋值运算符   =

      扩展的赋值运算符   +=  -= *=  /=  %=

           += 例子: int i = 10; 

                      i +=  10;等同于  i = i+10;

      其余的都类似

 

 基本的赋值运算符和扩展赋值运算符的区别:

      byte  i =10;

  //编译无法通过,运算结果是int类型,前边的变量是byte类型

          i = i + 10;

 

  // 语法:扩展赋值运算符不改变运算结果类型,可能损失精度

              i +=10;

 

条件运算符(三目运算符) ?:

 

    语法: Boolean表达式?表达式1 :表达式2

          Boolean表达式的结果是true,则整个表达式的结果就是表达式1的结果,相反则是表达式2的结果

public class A {

    public static void main(String[] args){

         boolean sex = false;

         char c = (sex? '男': '女');

       

          System.out.println(c);

 

         //类型不兼容

           char c1 = isSuccess? 's' : "失败";//不能编译

          //这个可以,因为println这个方法既可以打印字符也可以打印字符串

        System.out.println(isSuccess? 's' : "失败");

            

    }

 


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表