Java基本语言要素

来源:互联网 发布:viso软件流程图步骤 编辑:程序博客网 时间:2024/05/16 23:51

1.标识符

(1)标识符由大小写字母、数字、下划线“_”和美元符“$”组成,但是不能以数字开头

(2)Java严格区分大小写java和Java是完全不一样的2个标识符

(3)标识符不能使用Java的关键字

标识符命名习惯:

包名:使用小写字母a-z

类名和接口名:所有字母首字母大写如HelloWorld

方法名:第一个单词的首字母小写,其他单词首字母大写如getAge

变量名:成员变量和方法相同,局部变量全部使用小写

常量名:全部使用大写,最好使用下划线分隔单词



2.注释

Java有三种注释方式分别是

(1)单行注释

//哈哈你好
(2)多行注释

/*你好哈哈*/
(3)文档注释

/**哈哈你好*/
(2)和(3)的主要区别是(3)会写入 javadoc文档,一般用于类说明,作者信息等地方注释


3.基本数据类型

(1)整数类型

Java整数类型(表1-1)         类型  位数    取值范围    默认值    字节型 byte    8   -2^7~2^7-1     0    短整型 short   16   -2^15~2^15-1     0    整型 int   32   -2^31~2^31-1     0   长整型 long   64   -2^63~2^63-1     0
注意(如果定义长整型时需在数字后面加“L”或者"l",如long a=10L;)
Java中八进制以0开头,011代表的是十进制的9而不是11。十六进制以0x开头,0x11表示的是十进制的17而不是11,注意区分。


(2)浮点类型

Java浮点类型(表1-2)                类型  位数        取值范围   默认值    单精度浮点类型  float   32 1.4013E-45~3.4028E+38      0.0F    双精度浮点类型  double   64  4.9E-324~1.7977E+308      0.0D

注意(使用单精度浮点类型必须在数值后面跟上f或者F如 float f=3.14 f; 这和long是一样的,双精度浮点类型可加D或者d,也可以不加,因为双精度浮点类型是默认形式)


(3)布尔类型(boolean)

真:true,假:false 用于判断逻辑条件

注意(C、C++常用1和0来表示真假,在java里面不适用)


(4)字符类型(char)

字符类型数据用于表示单个字符,注意与字符串区分开,字符用单引号表示如'a',而字符串用双引号表示如"a"

字符类型可以和数值类型相互赋值,如为了输出字符’a',可以用以下2种方式

char ch=97;//因为字符'a'在unicode编码是97通过赋值直接打印出来System.out.println(ch);
转义字符输出
System.out.println('\u0061');//‘a’的16进制是0x61System.out.println('\141');//‘a’的8进制是0141


转义字符表(表1-3)        转义字符                                                          含义         \ddd       1~3位8进制数所表示的unicode字符,如\141是字符a        \uXXXX       4位16进制所表示的unicode字符,如\u0061是字符a       \'       单引号字符      \\       反斜杠字符      \t      垂直制表符,将光标移到下一个制表符的位置      \r      回车     \n      换行     \b      退格     \f      换页

4.数据类型转换

(1)自动类型转换

必须满足2个条件,1、转换数据类型必须兼容2、自动转换总是从低位类型到高位类型(这里的低位类型和高位类型分别指小的取值范围和大的取值范围)


public class MyTest{public static void main(String[] args){   short sInt=5;//定义一个short类型变量   int iInt=sInt;//short自动类型转换为int   System.out.println("short自动类型转换为int后的值="+sInt);      float f=1.0f;//定义一个float类型变量   double d1=f;//float自动类型转换为double   System.out.println("float自动类型转换为double的值="+d1);      long l=542L;//定义一个long类型变量   double d2=l;//long自动类型转换为double   System.out.println("long自动类型转换为double的值="+d2);      int i=54211000;//定义一个int类型变量   float d=i;//int自动类型转换为float   System.out.println("int自动类型转换为float的值="+d);   }}
输出

short自动类型转换为int后的值=5
float自动类型转换为double的值=1.0
long自动类型转换为double的值=542.0
int自动类型转换为float的值=5.4211E7

(2)强制类型转换

强制类型转换的转换数据类型也必须兼容,转换类型变成了从高位类型到低位类型,转换形式是(type)value;其中type是要强制转换后的数据类型

注意(进行强制转换因为是从大范围转换为小范围,所以当数值可能大于小范围最大值时就要特别注意数据可能会丢失)

public class MyTest{public static void main(String[] args){int i1=128;//定义一个Int类型byte b=(byte)i1;//强制类型转换byteSystem.out.println("int 强制类型转换byte后值等于"+b);double d=123.456;//定义一个double类型int i2=(int)d;  //强制类型转换intSystem.out.println("double 强制类型转换int后值等于"+i2);   char c1='A';//定义一个char类型int i=c1+1;//char类型和int类型计算char c2=(char)i;//进行强制类型转换System.out.println("int 强制类型转换 char 后值等于"+c2);}}
输出

int 强制类型转换byte后值等于-128
double 强制类型转换int后值等于123
int 强制类型转换 char 后值等于B

(3)隐含强制类型转换

byte=123;

整数的默认数据类型是int,隐含强制转换为byte类型,由Java系统自动完成,而浮点类型是不存在这种情况的所以float后面必须跟上F或者f


5.运算符和表达式

public class MyTest{public static void main(String[] args){int i1=8;int i2=8;//加减乘除求余运算int jia=i1+i2;//进行加运算int jian=i1-i2;//进行减运算int cheng=i1*i2;//进行乘运算int chu=i1/i2; //进行除运算        int qiuyu=i1%i2;//进行求余运算        System.out.println("进行加运算后值等于"+jia);System.out.println("进行减运算后值等于"+jian);System.out.println("进行乘运算后值等于"+cheng);System.out.println("进行除运算后值等于"+chu);System.out.println("进行求余运算后值等于"+qiuyu);//自增自减运算符int a=3;System.out.println("a的值等于"+a);//a++先调用a值再++System.out.println("a++的值等于"+(a++)+"  a++后a的值等于"+a);//++a先++再调用a值System.out.println("++a的值等于"+(++a)+"  ++a后a的值等于"+a);//a--先调用a值再--System.out.println("a--的值等于"+(a--)+"  a--后a的值等于"+a);//--a先--再调用a值System.out.println("--a的值等于"+(--a)+"  --a后a的值等于"+a);//位运算符    int m=3;//二进制为0000..0011因为是int是32位所以0011前面还有28个0    int n=5;//二进制为0000..0101因为是int是32位所以0101前面还有28个0    //与&运算如果相对应位都是1则结果为1否则0,m & n为0000..0001System.out.println("m & n等于"+(m & n));//或|运算如果相对应位都是0则结果为0否则1,m | n为0000..0111System.out.println("m | n等于"+(m | n));//异或^运算如果相对应位值相同则结果为0否则1,m ^ n为0000..0110System.out.println("m ^ n等于"+(m ^ n));/*        非~将操作数每一位按位取反,~m为1111..1100 ~n为1111..1010        因为负数是以补码形式存储的,以1111..1100为例符号位不变求反1000..0011,        再加1得到的补码是1000..0100即-4 */System.out.println("~m等于"+~m+"  ~n等于"+~n);//移位运算符/*   左移运算符将第一个操作数的比特位向左移动第二个操作数   指定的位数右边空缺的位用0补充       右移运算符将第一个操作数的比特位向右移动第二个操作数   指定的位数,移位后第一个操作数负数还是负数,正数还是正数              无符号右移运算符将第一个操作数的比特位向右移动第二个操作数   指定的位数,移位后不管原来是正还是负都用0填充 */int num=6;//0000..0110//6左移1位变成0000..1100System.out.println("6左移1位等于"+(num<<1));//6右移1位变成0000..0011System.out.println("6右移1位等于"+(num>>1));num=-8;//-8即1111..1000无符号右移1位变成0111..1100System.out.println("-8无符号右移1等于"+(num>>>1));/*    逻辑运算符    非短路逻辑操作符:&(与运算),^(异或运算),|(或运算)。                    进行逻辑&或者|运算时,不管操作符两边的条件表达式成不成立,                    都进行运算判断                    短路逻辑操作符:&&(并且),||(或者).                    如果操作符左侧就可以判断出结果就不会再进行右侧的判断 */        //到1<0已经知道逻辑为假了就不会再进行右侧的判断boolean b1=((1<0)&&(1/0>0));if(b1==true)System.out.println("结果为真");elseSystem.out.println("结果为假");//这个会报错,不管操作符两边的条件表达式成不成立,都进行运算/*boolean b2=((1<0)&(1/0>0));if(b2==true)System.out.println("结果为真");elseSystem.out.println("结果为假");*//* 三元运算符 expression?statement1:statement2 条件?真时执行操作:假时执行操作 */System.out.println("5大于3吗?"+(5>3 ? "大于" : "不大于"));}}

运算符优先级(表1-4)       最高优先级                  ()   [ ]     .                ++   --    ~    !                *    /   %                +    -                 >>   >>>   <<                >   >=   <   <=              ==  !=                &                 ^                 |                &&                 ||                 ?:                 =   +=   -=   *=     最低优先级   



参考文献:

                   Java从入门到精通  高宏静

                   Java面向对象编程  孙卫琴


0 0
原创粉丝点击