黑马程序员 Java基础(下)

来源:互联网 发布:电脑声音剪辑软件 编辑:程序博客网 时间:2024/05/19 17:23
---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------

Java中最基础的组成部分如下:

1.关键字

2.标识符

3.注释

4.常量与变量

5.运算符(包括算术、赋值、比较、逻辑、位、三元运算符等等)

6.各种语句(判断语句:if else,switch; 循环语句:while,for;等等)

7.函数

8.数组


这些内容都比较简单,不在此一一详述,将重点写出其中比较容易忘记和出错的一些地方。


关于标识符:

我觉得Java中的命名是一件令人头疼的事情,有时候很容易混淆,所以当有一套通用的格式时,能减少不少阅读的障碍。大家都使用这种格式更利于交流,所以便有了规范命名。不要轻视这个规则,一个好的书写习惯可以使得编程更加轻松易懂。

1. 包名:多单词组成时所有字母都小写。
• xxxyyyzzz

2. 类名接口名:多单词组成时,所有单词的首字母大写。
• XxxYyyZzz
3. 变量名和函数名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写。
• xxxYyyZzz

4. 常量名:所有字母都大写。多单词时每个单词用下划线连接。

• XXX_YYY_ZZZ


对注释的理解:

程序员应该养成良好的写注释习惯,不但是方便他人阅读,而且方便自己查阅。Java是一个开源的语言,当查Java方法的源代码时候,发现注释的行数远远多于执行的行数,这就可以显示出注释的好处了。

1. 单行注释: // 注释文字

2. 多行注释: /* 注释文字 */

3. 文档注释: /** 注释文字 */

此类注释可以被JDK中的javadoc所解析,是一种Java特有的注释,其中注释内容可生成一套以网页文件形式体现该程序的说明文档。


每一个常量或变量都有对应的数据类型,在内存中分配了不同大小的内存空间,这个是必须记下的内容:



一个易错的地方:

     对于 byte b = 1 ; b = b+1;这句话会报错,因为b+1的时候类型会自动提升为int,再转化成byte时会出现类型转换异常。

对于 byte b = 1; b += 1;  这句话是是对的,因为+=是一个赋值符号,和=在运算符优先级列表中处于同一级,相当将左右两边之和赋值给左边,只要其值在byte范围内即可。


关于运算符,重点说下逻辑运算符和位运算符:

&和&&的区别:都是连接boolean型的符号,表示and的意思。但&运行时左右两边都会参与运算;而&&运行时先检测左边是否为真,如为真:右边参与运算,如为假:那么右边不参与运算。

同理 | 和 || 。

^:异或,相当于两个对立事件,你发生我就不能发生,所以当^两边同为true或者false时,返回结果为false;当^两边boolean值不同时,返回true。

位运算符是直接对内存中数据的操作,具有高效性,其运算细节如下图:


>>是带符号的右移,当为负数时无论右移多少,高位永远为1。所以在一些特定情况下使用>>>更有效。


用标号跳出多重循环:

w: for(int i=0;i<5;i++){ q: for(int j=0;j<5;j++){break w;             //此处即可以直接结束外循环,为标号的作用}}


函数的重载(Overload):

概念:在同一类中,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不同即可。

特点:与返回值类型无关,只看参数列表。

好处:当用到同一类方法,只是参数个数或者类型不同时,用重载更方便与阅读,优化程序设计。


数组是存放在堆内存中的数据,是同一种数据类型的集合。这里主要的是要区分出栈内存和堆内存的不同:


知道了内存的结构便可以解决很多问题,如函数的调用。


要想交换数组中的两个元素位置,如何做到呢?

当使用一个函数swap如下:

public void swap(int a, int b){a = a^b;b = a^b;a = a^b;}
运行的结果是无法交换数组中的两个元素位置的,因为这样做仅仅是栈内存中两个局部变量改变了数据,当函数结束时就释放内存,与堆内存中数组元素的位置无关。

所以必须传入一个数组,用于交换:

public void swap(int[] arr, int a, int b){arr[a] = arr[a]^arr[b];arr[b] = arr[a]^arr[b];arr[a] = arr[a]^arr[b];}
这样就能成功交换数组中两个元素的位置了。


总结:要调用一个函数并且使其有效,有两种方法。

1. 使用return 方法,并且记录返回值。

2. 将地址值作为参数传递给函数得形参,使得函数在地址值中进行操作。此处即为传入堆内存中的数组,使函数在堆内存中调换位置。





---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
原创粉丝点击