java笔记 1 语法基础

2.1 常量和变量
    java运行时支不可以修改的数据称为常量, 有字面常量和标示符常量 变量是程序运行时值发生改变的量
2.2 数据类型
    java中所有变量都必须先确定其数据类型,然后才能使用。需要在内存中开辟一个空间《明确空间类型、变量名称、数据类型》
    java语言的数据类型有两种:基本数据类型和引用数据类型
    基本数据类型:boolean、byte、short、int、long、char、float、double
2.3 类型转换
    常见的类型转换有:赋值时类型转换;方法调用时类型转换;强制类型转换;字符串类型转换;数值类型提升。
    byte b=3;
     b= b+2; //错误 2位int型,b位byte型;相加是b自动提升为int型;int型的4不能赋值给byte型的b;
    b=(byte)(b+2); 需要进行强制类型转换
    上下文中要求类型转换时:有宽转换,窄转换,宽窄同时转换
    
宽转换
    byte可直接转换到 short、int、long、float、double;
    short可直接转换到 int、long、float、double;
    char可直接转换到 intf、long、float、double;
    int可直接转换到   long、float、double;
    long可直接转换到 float、double;
    float可直接转换到double;
窄转换
    窄转换在大多情况下都会丢失信息,要求程序员自己明确指定,进行强制转换;
    short可直接转换到 byte,char;
    char可直接转换到  byte,short
    int可直接转换到   byte,short,char;
    long可直接转换到  byte,short,char,int;
    float可直接转换到 byte,short,char,long;
    double可直接转换到 byte,short,char,long,float;
2.4 运算符和表达式
   2.4.1 算术运算符 "/"用于整数表示取整,7/2结果为3,用于float和double表示实数相除 7.0/2结果为3.5.
                "%"用于整型表示取余数 -1%5=-1 1%-5=1;用于float和double表示实数取余, 15.2%5=0.2;            16.5%5=1.2
++a 先自加在进行其他运算  a++先运算在自加;
 
2.4.2 关系运算符 > ,>=, < ,<= ,!= ,==(等于)  a==b>c等价于a==(b>c).
2.4.3 逻辑运算符 & | ! ^  && ||(ab都为false才是false)
2.4.4 位运算符   << (左移)  >>  (右移)
<<左移其实就是乘以2的移动的位数次幂
>>右移其实就是除以2的移动的位数次幂
>>带符号右移,高位是什么就补什么
>>>无论最高位是什么都用0补
class OperateDemo2 
{
	public static void main(String[] args) 
	{

		int x  = 7;

		//逻辑运算符用于连接boolean类型的表达式。

		//x>3 & x<6 = true & true = true;
		/*
		true & true = true;
		true & false = false;
		false & true = false;
		false & false = false;

		& : 只要两边的boolean表达式结果,有一个为false。那么结果就是false。
			只有两边都为true,结果为true。
		*/
		/*
		true | true = true;
		true | false = true;
		false | true = true;
		false | false = false;
		| : 两边只要有一个为true,结果为true。
			只有两边都有false,结果为false。
		*/

		/*
		^ : 异或;就是和|有点不一样。当true ^ true = false;
		true ^ true = false;
		true ^ false = true;
		false ^ true = true;
		false ^ false = false;
		^ : 两边相同结果是false。
			两边不同结果是true。

		*/

		/*
		!!true
		*/

		
		int a = 2;

		//a>3 && a<6;

		/*
		&和&&的特点:
		&:无论左边是true是false。右边都运算。
		&&:当左边为false时,右边不运算。


		|:两边都参与运算。
		||:当左边为true。右边不运算。
		*/



		System.out.println(false ^ false);
		System.out.println(~6);


		int n = 3,m = 8;
		System.out.println("n="+n+",m="+m);
		
		//1,通过第三方变量。
		/*int temp;
		temp = n;
		n = m;
		m = temp;
		*/

		//2不用第三方变量。
		//11 = 3 +  8;

		//3 = 11 - 8;
		//8 = 11 - 3;
		/*
		n = n + m;//如果n和m的值非常大,容易超出int范围。
		m = n - m;
		n = n - m;
		*/

		n = n ^ m;

		m = n ^ m;//(n^m)^m;

		n = n ^ m;//n ^ (n ^ m)

		System.out.println("n="+n+",m="+m);
	}
}
2.5流程控制
if else 结构 简写格式: 变量 = (条件表达式)?表达式1:表达式2;
三元运算符:e1?e2:e3  e1是一个布尔型表达式 true则计算e2,否则计算e3
			好处:可以简化if else代码。
			弊端:因为是一个运算符,所以运算完必须要有一个结果。

if和switch语句很像。
		具体什么场景下,应用哪个语句呢?
		如果判断的具体数值不多,而是符合byte short int char这四种类型。
		虽然两个语句都可以使用,建议使用swtich语句。因为效率稍高。

		其他情况:对区间判断,对结果为boolean类型判断,使用if,if的使用范围更广。

switch(x)
	{
	    case 3:
	    case 4:
	    case 5:
         }
while(< 布尔表达式>)
{
    <语句>
}
do
{
    <语句>
}
while(<布尔表达式>);
 
while:先判断条件,只有条件满足才执行循环体。
		do while: 先执行循环体,在判断条件,条件满足,再继续执行循环体。
		简单一句话:do while:无论条件是否满足,循环体至少执行一次。
1,变量有自己的作用域。对于for来讲:如果将用于控制循环的增量定义在for语句中。那么该变量只在for语句内有效。
		for语句执行完毕。该变量在内存中被释放。

		2,for和while可以进行互换。如果需要定义循环增量。用for更为合适。

		
		总结:
		什么时候使用循环结构?
		当要对某些语句执行很多次时,就使用循环结构。

2.6 递归
  直接递归(方法运行时有调用了自身)和间接递归(方法运行时通过调用其他方法最终又调用自身)
 
 
 
 
 
 
 
 
 
 

posted on 2013-05-20 21:21  L丶小布  阅读(182)  评论(0编辑  收藏  举报

导航