Java基本语言要素

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进制是0x61
		System.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;//强制类型转换byte
		System.out.println("int 强制类型转换byte后值等于"+b);
		
		double d=123.456;//定义一个double类型
		int i2=(int)d;  //强制类型转换int
		System.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..0001
		System.out.println("m & n等于"+(m & n));	
		//或|运算如果相对应位都是0则结果为0否则1,m | n为0000..0111
		System.out.println("m | n等于"+(m | n));
		//异或^运算如果相对应位值相同则结果为0否则1,m ^ n为0000..0110
		System.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..1100
		System.out.println("6左移1位等于"+(num<<1));
		//6右移1位变成0000..0011
		System.out.println("6右移1位等于"+(num>>1));

		num=-8;
		//-8即1111..1000无符号右移1位变成0111..1100
		System.out.println("-8无符号右移1等于"+(num>>>1));
		
		
		/*
		    逻辑运算符
		    非短路逻辑操作符:&(与运算),^(异或运算),|(或运算)。
                    进行逻辑&或者|运算时,不管操作符两边的条件表达式成不成立,
                    都进行运算判断
                    短路逻辑操作符:&&(并且),||(或者).
                    如果操作符左侧就可以判断出结果就不会再进行右侧的判断
		 */
		
        //到1<0已经知道逻辑为假了就不会再进行右侧的判断
		boolean b1=((1<0)&&(1/0>0));
		if(b1==true)
		System.out.println("结果为真");
		else
		System.out.println("结果为假");	
		
		//这个会报错,不管操作符两边的条件表达式成不成立,都进行运算
		/*boolean b2=((1<0)&(1/0>0));
		if(b2==true)
		System.out.println("结果为真");
		else
		System.out.println("结果为假");	
		*/
		
		/*
		 三元运算符
		 expression?statement1:statement2
		 条件?真时执行操作:假时执行操作
		 */
		System.out.println("5大于3吗?"+(5>3 ? "大于" : "不大于"));	
		
	}
	

}

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



参考文献:

                   Java从入门到精通  高宏静

                   Java面向对象编程  孙卫琴


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值