黑马程序员Java培训、Android培训_语言基础

 由于3月17日写的笔记无法正常更新编辑,此篇笔记用于覆盖。还好有备份,以后要坚持这个习惯,重要资料多做备份。

1、Java的基本语法

2、Java中数据的各种属性,如变量和数据的标识符,常量的类型、变量类型和及其作用域与生存周期等

1):java程序有三种注释方式:

“//注释单行/”;

*注释。。。*/”;

“/**注释。。。*/”专业注释;

2):与C(C++)不同,java中的标识符,可以美元符号($)组成但标识符不能以数字开头, java 无sizeof ,goto, const 关键字,但不能用goto const作为变量名

3):‘\r‘表示接受键盘输入,相当于按下了回车键; ‘\t‘是制表符,相当于table键;

‘\b‘是退格键,相当于Back Space;‘\‘‘是单引号,而‘\“‘是双引号;

4)3:变量字节大小及有效取值范围:

n         byte占用一个字节,数字大小为-27—27-1

n         short占用两个字节,数字大小为-215—215-1

n         int占用四个字节,数字大小为-231—231-1

n         long占用八个字节,数字大小为-263—263-1

n         float占用四个字节,数字大小为1.4E-45~3.4E+38 , -1.4E-45~-3.4E+38 。用二进制的指数形式表示一个浮点数的格式,如:101*22  , 101*2-3

n         double占用八个字节,数字大小为4.9E-324~1.7E+308, -4.9E-324~-1.7E+308 。

n         char占两个字节,数字大小为0—216-1,是unicode编码。字符的本来面目,我们为什么可以直接将一个数字赋给字符变量。

n         Boolean占一个字节,其取值只有两个,true和false。

5):浮点数在内存中的表示方式

在JDK文档中查找Float. intBitsToFloat的说明

打印出最大数和最小数及它们的二进制格式

打印出无穷大与NaN及它们的二进制格式

分析0x50000000所对应的浮点数 

6):类型转化自动类型转换(也叫隐式类型转换)强制类型转换(也叫显式类型转换)分析 System.out.println(‘a’+1)与  System.out.println(“”+’a’+1) 的区别

7):变量的生命周期与作用域:变量要先定义,后使用,变量只能在定义它的复合语句中使用。Java中不允许有变量的嵌套定义;

8、函数:函数的调用

n         函数调用的格式

n         在函数中使用return提前返回

n         如何理解函数返回值类型为void的情况

n         函数调用的过程分析

n         函数的重载就是在同一个类中允许同时存在一个以上的同名函数,只要它们的参数个数或类型不同即可

9、java中的运算符

运算符是一种特殊符号,用以表示数据的运算、赋值和比较,一般由一至三个字符组成 。运算符有:算术运算符、赋值运算符、比较运算符、逻辑运算符、移位运算符

9.1算术运算符的注意问题

n         “+”除字符串相加功能外,还能把非字符串转换成字符串 ,如: “x”+123;是“x123” 。

n         如果对负数取模,可以把模数负号忽略不记,如:5%-2=1。但被模数是负数就另当别论了。

n         对于除号“/”,它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。

n         算术运算符的应用技巧

思考题1:某个培训中心要为新到的学员安排房间,假设共有x个学员,每个房间可以住6人,让你用一个公式来计算他们要住的房间数?

           答案:(x+5)/6。这种算法还可用在查看留言板的分页显示上: 其中x是总共的留言数,6是每页显示的留言数,结果就是总共有多少页。

n         思考题2:假设你要让x的值在0至9之间循环变化,请写出相应的程序代码。

答案:

int x=0;

while(true)

{

x = (x+1)%10;

}

9.2赋值运算符

注1:在JAVA里可以把赋值语句连在一起,如:x = y = z = 5 ;

注2 :x += 3等效于x = x + 3,等于*= ,-=,/=依此类推

9.3比较运算符

注1:比较运算符的结果都是boolean型,也就是要么是true,要么是false。

注2:比较运算符“==”不能误写成“=”

9.4逻辑运算符

注1:逻辑运算符用于对boolean型结果的表达式进行运算,运算的结果都是boolean型 。

注2:“&”和“&&”的区别在于,如果使用前者连接,那么无论任何情况,“&”两边的表达式都会参与计算。如果使用后者连接,当“&&”的左边为false,则将不会计算其右边的表达式。

9.5移位运算符

任何信息在计算机中都是以二进制的形式保存的,&,|,^除了可以作为逻辑运算符,也可以做为位算符,它们对两个操作数中的每一个二进制位都进行运算。

–     只有参加运算的两位都为1,&运算的结果才为1,否则就为0。

–     只有参加运算的两位都为0,|运算的结果才为0,否则就为1。

–     只有参加运算的两位不同,^运算的结果才为1,否则就为0。

n         我们可以对数据按二进制位进行移位操作,java的移位运算符有三种:

–     <<  左移

–     >>  右移

–     >>> 无符号右移

“>>”和“>>>” 区别的实例分析

public class ShiftTest

{

public static void main(String [] args)

{

               int x=0x80000000;

               int y=0x80000000;

x=x>>1;

y=y>>>1;

System.out.println(“0x80000000>>1 = ” + Integer.toHexString(x));

System.out.println(“0x80000000>>>1 = ” + Integer.toHexString(y));

}

}

运行结果如下:

0x80000000>>1 = c0000000

0x80000000>>>1 = 40000000

 

十六进制与二进的对比

       0x8000000016 =1000,0000, 0000, 0000, 0000, 0000, 0000, 00002

       0xc000000016=1100,0000, 0000, 0000, 0000, 0000, 0000, 00002

       0x4000000016 =0100,0000, 0000, 0000, 0000, 0000, 0000, 00002

移位运算的注意事项及小技巧

n         移位运算符适用类型有byte、short、char、int、long

n         对低于int型的操作数将先自动转换为int型再移位。     

n         对于int型整数移位a>>b,系统先将b对32取模,得到的结果才是真正移位的位数。例如:a>>33和a>>1结果是一样的,a>>32的结果还是a原来的数字。

n         对于long型整数移位时a>>b ,则是先将移位位数b对64取模。

n         移位不会改变变量本身的值。如a>>1;在一行语句中单独存在,毫无意义 。

n         x>>1的结果和x/2的结果是一样的,x<<2和x*4的结果也是一样的。总之,一个数左移n位,就是等于这个数乘以2的n次方,一个数右移n位,就是等于这个数除以2的n次方。请思考:如何用程序实现求2的x次方。答案:y = 1<< x;

运算符的优先级

我们可以使用括号改变运算赋的优先级,分析int a =2;int b = a + 3*a;语句的执行过程 与int a =2;int b =( a + 3)*a;语句的执行过程的区别 。

如何避免多个运算符带来的问题

n         对于int a =2; int b= a + 3 * a++;这样的语句,b最终等于多少呢?

作者试验得到的结果是8。

n         对于int a =2; int b= (a ++)+ 3 * a;这样的语句,b最终等于多少呢?

作者试验得到的结果是11。

如何避免多个运算符带来的问题

与其去思考其中的原因,我们还不如将上面的第二句改为几条语句来实现我们想要的结果。

不要在一行中编写太复杂的表达式,也就是不要在一行中进行太多的运算

在一行中进行太多的运算并不能为你带来什么好处,相反只能带来坏处,它并不比改成几条语句的运行速度快,它除可读行差外,还极容易出错。

对于优先级顺序,读者不用刻意去记,有个印象就行如果你实在弄不清这些运算先后关系的话,就用括号或是分成多条语句来完成你想要的功能,因为括号的优先级是最高的,

这也是软件编码规范的一个要求。  

10程序的流程控制

  顺序结构

 选择结构

循环结构

顾名思义,顺序结构就是程序从上到下一行一行执行的结构,中间没有判断和跳转,直到程序结束。

if语句的选择结构

变量 = 布尔表达式?语句1:语句2;

If语句还可以嵌套使用

       if (表达式1) 

              if (表达式2) 语句1;

              else语句2;

     esle 

              if (表达式2) 语句3;

              else语句4;

n         switch语句判断条件可接受int, byte, char, short型,不可以接受其他类型

n         一旦碰到第一次case匹配,就会开始顺序执行以后所有的程序代码,而不管后面的case条件是否匹配,后面case条件下的代码都会被执行,直到碰到break语句为止。

while循环语句

do-while循环语句

do  语句

while (表达式);

public class TestDo

{

public static void main(String[] args)

{

       int x=3;

       while(x==0)

       {

              System.out.println("ok1");

              x++;

    }

    int y=3;

    do

    {

           System.out.println("ok2");

           y++;

    }

    while(y==0);

}

}

do-while循环语句

n         编写一个程序,这个程序不断地读取从键盘上输入的字符,直到读到字符’q’时,程序结束。

n         提示:调用System.in.read();可以读取到一个从键盘上输入字符对应的整数。通过这个程序,你一定能体会到在什么样的情况下,用do-while循环语句比while循环语句方便

for循环语句

break语句

break语句可以中止循环中的子语句和switch语句。一个无标号的break语句会把控制传给当前(最内)循环(while,do.for或Switch)的下一条语句。如果有标号,控制会被传递给当前方法中的带有这一标号的语句。如:

continue语句

continue语句只能出现在循环语句(while,do,for)的子语句块中,无标号的continue语句的作用是跳过当前循环的剩余语句块,接着执行下一次循环。 用continue语句的打印出 0到10之间的所有奇数的程序例子。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值