黑马程序员技术交流社区

标题: 黑马程序员-JAVA-基础知识-第二天 [打印本页]

作者: jing3133920    时间: 2015-4-28 13:22
标题: 黑马程序员-JAVA-基础知识-第二天
本帖最后由 jing3133920 于 2015-4-28 13:22 编辑

一、JAVA语言的基本组成1.关键字:在java中含有特殊意义的单词。
2.标识符:在程序中自定义的一些名称。只能由26个英文大小写字母,数字0~9,符号 _ $组成,且不能由数字开头,也不能使用关键字。(java中严格区分大小写)
命名规范:
包名:多单词组成时所有字母都小写。例如:xxxyyyzzz
类名和接口名:多单词组成时,所有单词的首字母大写。例如:XxxYyyZzz
变量和函数名:多单词组成时第一个单词首字母小写,其他单词首字母大写。例如:xxxYyyZzz
常量名:所有字母都大写,多单词是用下划线链接。例如:XXX_YYY_ZZZ
3.注释:用于注解说明解释程序的文字就是注释。它能提高代码的阅读性。
格式:
单行注释://注释文字
多行注释:/*注释文字*/
文档注释:/**注释文字*/
4.常量和变量:
常量表示在java中不能改变的数值。分类:整数常量,小数常量,布尔型常量,字符常量,字符创常量,null常量。
其中整数常量在java中有三种表现形式
十进制:0-9,满10进一
八进制:0-7,满8进一,用0开头表示
十六 进制:0-9,A-F,满16进一,用0x开头表示
进制转换:
十进制-->二进制:除二取余。例:6除以2等于3余数为0;3除以2等于1余数为1;最后1不够被2除。所以6的二进制是110
二进制-->十进制:二进制第0位的权值是2的0次方,第一位是2的1次方....依次计算每一位的权值并相加。例:110 1*2的2次幂+1*2的1次幂+0*2的0次幂=6.所以6就是二进制110的十进制数。八进制-->十进制和十六进制-->十进制的方法基本一样。只是将幂数分别改成8和16即可.
二进制-->八进制:421。例:110,二进制每3位数对应421,第一个1对应4,第二个1对应2,第3个0对应1。因为第一个数和第二个数是1,且分别对应4和2.将两个数相加得到6.所以110的八进制数是6
二进制-->十六进制:8421。与上面的方法一样,二进制每4位对应8421。
八进制-->二进制:也可以通过421来转换,比如036,把这个数拆分成’3‘,’6‘,每个部分对应一组421。首先’3‘,在421中由2和1相加等于3。所以转化成二进制就是011,’6‘在421中由4和2相加等于6。所以是110.两组二进制组合在一起就成了011110.这就是36的二进制。十六进制-->二进制也是同理,将421改成8421即可。
变量:就是将不确定的数据进行存储。也就是在内存中开辟一个空间。如何开辟内存空间呢?就是通过数据类型和变量名称。
数据类型:
    基本数据类型:
                     数值类型:
                               整数类型(java默认int):
                                               byte:1个字节8位,取值范围(-128,127)
                                              short:2个字节16位,取值范围(-32768,32767)
                                                  int:4个字节32位,取值范围(-2^31,2^31-1)
                                               long:8个字节64位,取值范围(-2^63,2^63-1)
                               浮点类型(java默认double):
                                               float:4个字节32位,取值范围(-3.40292347E+38,3.40292347E+38),在给这个类型变量赋初值时需要注意小数默认是双精度。所以必须写个f来表示这个数是单精度。例如:float f=2.3f;
                                           double:8个字节64位,取值范围(1.79769313486231570E+308,1.79769313486231570E+308)
                     字符类型:char:2个字节16位。这个类型的数据也可以参与运算,因为它的字符在Ascll表中有对应的数字。
                     布尔类型:boolean:取值为true和false
    引用数据类型:
                               类:class
                            接口:interface
                            数组:[]
数据类型转换:
例:byte a=2 ;a=(byte)(a+3); 这个结果会出现一个数据溢出的错误,因为byte在内存中占1个8进制位,而常量3是个整除占4个八进制位。java中不同类型的数据进行运算,小的类型会向大的类型自动提升。但是a提升后进行运算的结果是整形数据无法再放入byte型的a中。所以用(byte)x+x将结果强制转换成byte类型再打印输出。
5.运算符
算术运算符:+ ; - ; * ; / ; % ; ++ ; -- ; +(字符串相加,例:println(“aa”+“bb”);结果是aabb)注:
%:负数只对左边的被余数有效。例当-2%5其结果是-2,如果2%-5那结果任然是正数2.
+字符串加号:字符串数据和任何数据使用+都是相连接,最终都变成字符串
转移字符:通过\来转变后面字母或字符的含义
\n:换行。
\b:退格。相当于backspace。
\r:按下回车键。window系统,回车符是由两个字符来表示\r\n.
\t:制表符。相当于tab键。
赋值运算符:= ;+= ; -= ; *= ; /= ;%=
示例:short x = 3;x = (short)(x + 3);此段代码与赋值代码x+=3的意思相同。但是x = x + 3;会对右边进行提升后运算结果,得到的结果类型大于short所以报错。而x += 3;会通过赋值号进行自动强制转换操作(转换成你所定义的数据类型)。
比较运算符:== ; != ; < ; > ; <= ; >= ; instanceof 比较运算符的结果都是boolean型,要么true要么false。比较运算符“==”不能误写成“=”
逻辑运算符:&(false&true 结果false) ; |(false|true结果true) ; ^(true^false结果true) ; !(!true结果false) ; &&(false&&true结果false) ; ||(false||true结果true)。逻辑运算符就是用来连接boolean类型的表达式。
注:
& 与 &&的区别:&不管左边的是true还是false,都计算右边。
&&如果左边的是false,将短路掉右边的不计算。|与||的区别也在于此。

位运算符:在使用位运算符时需要将数据转换成二进制数进行运算
<<:左移.3<<2=12-->3*2*2=12:011左移2位等于1100等于1*2^3+1*2^2等于12
>>:右移.3>>1=1-->3/2=1:011右移1位等于001等于1
>>>:无符号右移.3>>>1=1-->3/2=1:011右移1位等于001等于1
&:与运算符.6&3=2:110与上011等于010等于2
|:或运算符.6|3=7:110或上011等于111等于7
^:异或运算符.6^3=5:110异或011等于101等于5(一个数异或同一个数两次,结果还是那个数)
~:反码.~6=-7:110取反码-110+1等于-111等于-7
注:
3<<n --> 3*2^n
6>>n --> 6/2^n
<<:乘以2的移动的位数次幂
>>:除以2的移动的位数次幂



位移时最高位补什么由原有数据的最高位值而定。
如果是0,位移后,用0补位。
如果是1,位移后,用1补位。
>>>:无论最高位的原有数据是什么都补0

练习:
1.用最快速的方法计算4乘以14;答:4<<3|24
2.交换两个变量里的值(不用第三方变量);答:n=n^m; m=n^m; n=n^m;

三元运算符:表达式1?表达式2:表达式3;如果表达式1为true运行表达式2,如果是false运行表达式3.
三元运算符可以简化if else代码。但是因为是一个运算符,所以运算完毕必须要有一个结果。
6.语句
判断结构if语句三种格式:
if(条件表达式){执行语句;}
if(条件表达式){执行语句;}else{执行语句;}
if(条件表达式){执行语句;}else if(条件表达式){执行语句;}else{执行语句;}
选择结构switch语句格式:
switch(表达式){
                   case 取值1:
                            执行语句;
                            break;
                   case 取值2:
                            执行语句;
                            break;
                            ...
                            default;
                            执行语句;
                            break;
}
注:
case 和 default定义位置可以随意,但是执行顺序是固定的。
如果default放在开头且下面没有大括号或break。程序将依次向下执行并且不做任何判断直到遇到break结束
break的作用范围选择和循环结构,它单独存在时,下面可以有任何语句。因为都执行不到。
7.函数
8.数组






作者: 支离疏者    时间: 2015-5-1 22:37
1.用最快速的方法计算4乘以14;答:4<<3|24
作者: 支离疏者    时间: 2015-5-1 22:40
1.用最快速的方法计算4乘以14;答:4<<3|24

没有看懂4<<3|24是什么意思,
不应该是14<<2么
作者: jing3133920    时间: 2015-5-1 22:54
支离疏者 发表于 2015-5-1 22:40
1.用最快速的方法计算4乘以14;答:4

我是以不改变4的基础上写的. 4<<3=32 ; 4*14-32=24; 所以又或上了一个24
作者: 支离疏者    时间: 2015-5-2 00:59
jing3133920 发表于 2015-5-1 22:54
我是以不改变4的基础上写的. 4

原来是这样,但是这样就多了一个|的位运算,觉得还是直接不变14,变4更好!:)
作者: 爆炸头    时间: 2015-5-2 10:04
总结的不错呀~~~~~~~~~~~~
作者: 爆炸头    时间: 2015-5-2 10:06
支离疏者 发表于 2015-5-1 22:37
1.用最快速的方法计算4乘以14;答:4

乘以15是4<<3|124么?   乘以非2的N次方的规则能说下么?
作者: jing3133920    时间: 2015-5-2 23:07
支离疏者 发表于 2015-5-2 00:59
原来是这样,但是这样就多了一个|的位运算,觉得还是直接不变14,变4更好! ...

同意,还是 改变4比较好
作者: xfliyy    时间: 2015-5-2 23:14
学习了:victory:
作者: 吾爱SF    时间: 2015-5-2 23:15
给力,很详细,小白来学习
作者: 爱如kongcheng    时间: 2015-5-2 23:20
正则感觉好难呀
作者: Melo    时间: 2015-5-2 23:28
这个都学过了- -
作者: 黄文昭    时间: 2015-5-3 00:10
赞一个。
作者: 大西洋    时间: 2015-5-3 00:12
感谢楼主的分享!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2