您的位置:首页 > 职场人生

黑马程序员ava学习笔记——java语法基础知识

2015-06-02 14:26 671 查看
------- android培训java培训、期待与您交流!
----------
今天从java语言的组成一直写到函数,基本上都是一点一点从平时手写的笔记上挑出来打上去的,感觉数组比较重要,代码也比较多,所以单独放在下一篇里去写。

javac语言是由关键字、标识符、变量和常量、运算符、语句、函数、数组、注释所组成的。

关键字:是被java赋予了特殊含义的单词,所有字母都是小写。

注释:分为单行注释、多行注释和文档注释。作用是注解说明和调试程序。

标识符

在程序中自定义的名称比如类名,变量,常量,函数,语句等都有名字,这些名字统称之为标识符.它是用来给类、对象、方法、变量、接口和自定义数据类型命名的。

标识符是由数字"0-9",字母"a-z",下划线"_",美元符号"$"组成的。

注意:java中的关键字不能用作标识符,标识符不能用数字开头。

Java中的名称规范:

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

类名接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz。

变量名和函数名:多单词组成时,第一个单词首字母小写,第二个单词开始每个

单词首字母大写:xxxYyyZzz。

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

常量

常量是java中固定不变的量。

Java中常量的分类:
1. 整数常量:所有整数;
2. 小数常量:所有小数;
3. 布尔型常量:只有两个值true和false;
4. 字符型常量:存在许多字符的串并被“”包围;
5. 字符常量:将一个字母、数字或符号用一对‘’包围;
6. null常量:只有一个数值,那就是null。

java中的整数有三种表现形式:
十进制:0-9,满十进一;
八进制:0-7,满八进一,以0开头;
十六进制:0-9,10-16用A-F表示,满十六进一,以0x开头;
进制间的转换:
二进制:8位,8个开关表示一个单位,这个单位就是字节。计算机内存中存放的全是二进制数据。
十进制转二进制:对十进制的数进行除二运算,取每一次运算完的余数,如下:



得到6的二进制就是110。
二进制转十进制:二进制位上的数*2的二进制所在位置的序号的次方。



这个二进制的数转换成十进制就是53。
四个二进制位是一个十六进制位,如果是十进制往十六进制转换,可以先将十进制的数转换成二进制,然后在通过二进制转换成十六进制,这样转换要简单一些。同理十进制往八进制转也可以用这种方法。

负数的二进制表现形式:

一个负数的二进制其实就是这个数的相反数的二进制取反再加1;

所以如果我们要想知道-6的二进制是多少,首先需要知道6的二进制,然后在进行取反再加一的操作就可以了。

6的二进制:0000-0000 0000-0000 0000-0000 0000-0110

取反: 1111-1111 1111-1111 1111-1111 1111-1001

加1: 0000-0000 0000-0000 0000-0000 0000-0001

——————————————————————

结果: 1111-1111 1111-1111 1111-1111 1111-1010

这个结果就是二进制的-6。负数的最高位都是1。取反就是二进制的1变成0,0变成1。

变量

将不确定的量进行存储,需要在内存中开辟一个空间,变量是用来不断的存放同一类型的常量,并可以重复使用。

定义变量的格式:数据类型 变量名 = 初始化值。

java中的数据类型分为基本数据类型和应用数据类型。

基本数据类型:



整数:byte:1个字节,short:两个字节,int,四个字节,long,八个字节,java中默认是int。

浮点型:float:四个字节,double:八个字节,java中默认是double.

字符型:char:两个字节。

boolean型:只有flash和true,一个字节。

初始化值需要和数据类型相匹配,float f = 2.3是错误的,因为系统对于小数默认数据类型是double,2.3是double型的,二者不能相等,要在数值后加f,float f = 2.3f;

自动类型提升和强制类型转换:
我们先举个例子: byte b = 3;b = b+3;这样写是错误的,编译器会提示损失精度,因为b是byte型,而3是int型数据,其实b+3是可以运算的,因为当b和整数进行运算时会自动提升类型,运算完的结果还是int型的数据,自动类型提升的原则是以大的为主,小的向大的提升。要把一个int型的数值赋值给b就要进行强制类型转换,格式是b = (byte)(b+3);负责编译时就会提示损失精度。

float是四个字节,而int也是四个字节,当float和int运算时,结果是float,因为多个小数点。

运算符

在java中运算符包括:算术运算符、赋值运算符、比较运算符、逻辑运算符、位运算符和三元运算符。

算术运算符:



“+”还可以用于连接字符串,将固定的放在""里边,不固定的用“+”进行连接。
对于“/”,运算完的结果还是int类型的。
“%”结果的符号取决于被模数是不是负数。
赋值运算符:
符号:= , +=, -=, *=, /=, %=
示例:

int a,b,c; a=b=c =3;

int a = 3; a+=5;等同运算a=a+5;

注意:如果short s = 4;s+=3和s=s+3的结果是不同的,前者编译可以通过,后者不行,因为前者在运算过程中,有一个自动转换的的动作,而后者运算完没进行强转,编译会失败。

比较运算符:



比较运算符这一块没有太多要说,计算出来的结果都是boolean型的。
逻辑运算符:



注意:&和&&的区别,|和||的区别。

&:与 参与逻辑运算的表达式全部为true,结果才是true;
&&:双与(短路) 当&&左边为false时右边就不运算了,效率比&高;
|: 或 参与逻辑运算的表达式有一个为true,结果便是true;
||:短路 当||左边为true时,右边就不运算了,效率比|高。
位运算符:

位运算符是直接对二进制进行运算。

左移:<<;空位补0,被移除的高位丢弃,空缺位补0,相当于乘以2的移动位数次幂。

右移:>>;被移位的二进制最高位是0,右移后,空缺位补0;最高位是1,空缺位补1,相当于除以2的移动位数次幂。

无符号右移:>>>;被移位二进制最高位无论是0或者是1,空缺位都用0补。

与: &;1&1时结果是1,其他的都是0,相当于1是true,0是false。

或:|;0
| 0时结果是0,其他的是1。

异或: ^;对二进制位进行 ^运算,如果二进制位上的数相同,结果是0,不同,结果是1。

反码(~):就是对应的二进制数取反,即二进制数中0变成1,1变成0。

三元运算符:
格式:(条件表达式)?表达式1:表达式2;

如果条件表达式结果为true,那么运算后的结果为表达式1,否则为表达式2。

程序流程控制

顺序结构:语句的执行顺序从上而下,依次执行。

判断结构:有三种结构,分别是:

第一种:

if(条件表达式)
{
执行语句;
}
第二种:

if(条件表达式)
{
执行语句;
}
else
{
执行语句;
}
第三种:

if(条件表达式)
{
执行语句;
}
else if(条件表达式)
{
执行语句;
}
else if(条件表达式)
{
执行语句;
}
......如果还有其他的判断条件,就继续添加else if语句。
else
{
执行语句;
}
if语句特点:

a,每一种格式都是单条语句。

b,第二种格式与三元运算符的区别:三元运算符能够简化if else代码,但是因为它是一个运算符,所以运算完必须要有结果。

c,条件表达式无论写成什么样子,只看最终的结构是否是true 或者false;
选择结构:switch语句

格式:

switch(表达式)

{

case取值1:

执行语句;

break;

case取值2:

执行语句;

break;

…...

default:

执行语句;

break;

}

if语句可以判断区间(除了具体数值),switch判断的区间太大时会很麻烦,如果要判断具体数值,数值太多时用switch语句。其他情况下用if。

switch语句的四个特点:

a,选择类型有四种:byte,short,int,char(在java5.0中添加了枚举,7.0中添加了字符串)。

b,case之间与default没有顺序。先执行第一个case,没有匹配的case执行default。

c,结束switch语句的两种情况:遇到break结束,执行到switch结尾结束。

*d,如果匹配的case或者default没有对应的break,那么程序会继续向下执行,运行可以执行的语句,直到遇到break或者switch结尾结束。

循环结构:

想让语句执行很多次,这时就可以用循环结构。

while语句格式:

while(条件表达式)

{

执行语句;

}

do while语句格式:

do

{

执行语句;

}

while(条件表达式)

要注意do while语句中while后面跟的有分号。

比较一下while和do while的区别?

while先判断条件,只有条件满足才执行循环体。

do while先执行一次循环体中的语句,再去判断条件,条件满足,则继续执行循环体。

总之就是,无论是否满足条件,do while的循环体至少执行一次。

for 语句格式:

for语句格式:

(第一步) (第二步) (第四步)--->回到第二步进行

| | | 判断,满足条件

| | | 继续循环

for(初始化表达式;循环条件表达式;循环后的操作表达式)

{

(第三步)

|

执行语句;

}
*for语句中定义的x有它自己的作用域,对于for来讲,如果将用于控制循环的增量定义在for语句中,那么该变量,只在for语句中有效,for语句执行完毕,该变量被释放。

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

for的初始化表达式可以不写,循环条件表达式也可以不写,不写就默认是true,循环后的操作表达式也可以不写,所以无限循环可以写成:for( ; ; ){}或者while(true){}。

在这里引入两个思想,一个是累加思想,一个是计数器思想。

累加思想:通过变量记录住循环操作后的结果。

计数器思想:通过一个变量记录住数据的状态变化。

循环嵌套

就是循环中还有循环。

规律:尖朝上可以改变条件,让条件随着外循环变化。

尖朝下可以改变初始化值,让初始化至随着外循环变化。

其他流程控制语句:break(跳出),continue(继续);

应用范围:break:用于选择结构和跳出循环结构。可以对循环进行编号,便于break跳出指定循环。

continue:用于循环结构,结束本次循环,继续下一次循环。

函数

函数就是定义在类中的,具有特定功能的一段小程序。

函数的格式:

修饰符 返回值类型 函数名(参数类型1 形式参数1,参数类型2 形式参数2,......)

{

执行语句;

return:返回值;

}

函数的特点:

a,将功能代码进行封装,提高了代码的复用性。

b,当函数运算后没有具体的返回值时,这是返回值类型用一个特殊的关键字来表示,这个关键字就是void,它代表的是没有具体返回值类型的情况。

c,当行书中的返回值类型为void时,函数中的return语句可以不写。

d,函数可以被调用,但是不可以在函数中定义函数。

* 如何定义一个函数:

a,先明确该函数的返回值类型;

b,明确该函数中是否需要未知的内容参与运算(是独立实现还是依靠调用者给出数据才能实现)。

函数的重载:

一个以上的同名函数,参数或者参数列表不同,重载之和参数列表有关系。

什么时候用重载?

当定义的功能相同,但是参与运算的参数列表不同时,就定义一个同名函数来表示其功能,方便阅读,而通过参数列表的不同来对其进行区分。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: