Java 学习过程记录_语言基础

昨天有事情竟然没有花时间刻苦,今天就多学了两个多小时,边工作边学习就是不容易啊。

之前学过C语言和C++,据说java在其基础上有发展,有很多优势,现在还没有什么深刻体会,现学习过程中主要关注这些区别。先做部分笔记如下:

1Java的基本语法

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

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

//注释单行/”;

*注释。。。*/”;

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

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

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

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

43:变量字节大小及有效取值范围:

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占一个字节,其取值只有两个,truefalse

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

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

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

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

分析0x50000000所对应的浮点数

6):类型转化 自动类型转换(也叫隐式类型转换)强制类型转换(也叫显式类型转换)

 System.out.println(‘a’+1)  System.out.println(“”+’a’+1) 的区别:后者为 a1;前者是a的数值加1;

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

8、函数:函数的调用

n         函数调用的格式

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

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

n         函数调用的过程分析

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

9java中的运算符

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

9.1算术运算符的注意问题

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

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

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

n         算术运算符的应用技巧

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

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

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

答案:

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         移位运算符适用类型有byteshortcharintlong

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

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

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

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

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

n         顺序结构

n         选择结构

n         循环结构

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

if语句的选择结构

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

If语句还可以嵌套使用

    switch语句判断条件可接受int, byte, char, short型,不可以接受其他类型 一旦碰到第一次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循环语句

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

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

for循环语句

break语句

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

continue语句

continue语句只能出现在循环语句(while,dofor)的子语句块中,无标号的continue语句的作用是跳过当前循环的剩余语句块,接着执行下一次循环。 continue语句的打印出 010之间的所有奇数的程序例子。

先做初步总结,明天将对红色部分做详细总结。

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值