黑马程序员——第二天(Java基础语法1)

---------------------- android培训java培训、期待与您交流! ----------------------

关键字:

被java赋予了特殊的含义


一.标识符

在程序中自定义的一些名称  比如说 类名  

规则:(必须要遵守的 )

由26个引文字母大小写,数字:0-9符号 _$组成

定义合法标识符规则:

1.数字不可以开头

2.不可以使用关键字。(main不是关键字)

java中严格区分大小写

注意:在起名字的时候,为了提高阅读性,要尽量有意义。

Java中的命名规范

包名:多单词组成时所有字母都小写。
类名接口名:多单词组成时,所有单词的首字母大写。
变量名和函数名:多单词组成时,第一个单词首字母小写,第二 个单词开始每个单词首字母大写。
常量名:所有字母都大写。多单词时每个单词用下划线连接。


二.常量

Java中一些固定不变的数值

Java中常量的分类:

1.整数常量:所有整数 (4 ,8 , 12)

2.小数常量:所有小数

3.布尔型常量:较为特有,只有两个数值:true false(用于判断)

4.字符常量:将一个数字字母或者符号用单引号(' ')标识(‘4’ ‘+’字符)

5.字符串常量:将一个或者多个字符用双引号标识 (“abc”)

6.null常量,只有一个数值就是null

三.进制的特点

对于整数:java有三种表现形式

十进制:0-9,满10进1 (23)

八进制:0-7,满8进1,用0开头表示(023)

十六进制:0-9,A-F,满16进1,用0x开头表示(0x4a2c)

进制的由来:任何数据在计算机中都是以二进制的形式存在。二进制早期由电信号开关演变而来。

一个整数在内存中一样也是二进制的,但是使用一大串的1或者0组成的数值进行使用很麻烦。

所以就想把一大串缩短点,将二进制中的三位用一位表示。

这三位可以取到的最大值就是7,超过7就进位了。这就是八进制。(为了让操作形式更简单)

但是对于过长的二进制变成八进制还是较长,所以出现的用4个二进制位表示一位的情况,

四个二进制位最大是15,这就是十六进制


规律:进制越大,表现形式越短


0100-0101 由八个二进制位  表示一个最小的单位(最基本的数据单元)  叫做字节

计算机中  全是用二进制进行存储的   

数据的映射 就形成了一张表  老美用的表 叫做ASCII 编码表 

之所以出现八进制 和 十六进制  为了更方便的表示数据  


四.进制转换(十进制和二进制)

十进制--->二进制  

原理:对十进制数进行除2运算

Integer.toBinaryString(int i);//十进制向二进制的转换


二进制-->十进制

原理:二进制乘以2的过程


五.进制转换(八进制和十六进制)

六.负数的二进制表现形式

其实就是正数的二进制取反+1

一个整数在内存中 占了4 个字节 

取反:将二进制的1变成0,0变成1

负数的二进制位的最高位是1  正数是0 负数是1     1 是取反得来的 


七.变量

内存中开辟一个空间   把要运算的值 或者叫做 要操作的值 存放到该空间当中

这个空间存在的好处在于 这个空间里的值 可以任意变化 

只要能够操作该空间  就能操作空间里的值  

变量:就是将不确定的数据进行存储。

也就是需要在内存中开辟一个空间  

如何开辟内存空间呢 ?

空间里可以一直往里面存变化的数据

这个空间定义完 想去使用  必须有个名称  这个名称  我们称之为 变量名

明确一下空间的类型   我们称之为 数据类型   

Java  对类型的划分是非常细致的   

开辟空间 就是通过明确数据类型  变量名称 数据来完成的   。


byte:是以一个8位来表示的  8个二进制位来表示一个字节数据 (取值范围-128~~127)-2的7次方  到  2的7次方减1

short:是以16个二进制位来表示的  (取值范围 -32768~~32767) -2的15次方  到  2的15次方减1

int:4个8位   也就是32个二进制位来表示的   (取值范围 -2的31次方  到  2的31次方减1) 

long:

一般情况下  写整数  默认为  int型   byte 是1两的碗  short是2两的碗  int是4两的碗    long是8两的碗

CPU里的内存叫做缓存   是用于缓存数据用的 缓冲存储区域


float:单精度浮点数   占了4个8位

double:双精度浮点数 占了8个8位

两者精确程度不同 

凡是写的小数  默认是double


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

什么时候定义变量?

当数据不确定的时候,需要对数据进行存储时,就定义一个变量来完成存储动作


八.类型转换

自动类型提升

强制类型转换

System.out.println('A'+0);

System.out.println((char)5);

九.算术运算符



        int x = 3518;
	x = 3518 / 1000 * 1000 ;
	System.out.println(x);
	打印出:3000
%取模  就是取余数  

注意  如果左边小于右边  结果是左边

如:3%5  的结果是 3

左边等于右边  结果是 0

右边是1  结果是0

取模的时候   如果出现负数的话  这个负数只看被模数(就是只看左边)

例如  -2%5=-2     2%-5=2     -3%-5=-3


++自增   

--自减

		int a=3,b;
		b=a++;//a++ ++叫做给a中的这个变量值进行+1操作  并把+1后的值 重新赋给a
		
		System.out.println(b);
		System.out.println(a);

答案为 3 4 


		int a=3,b;
		b=++a;
		
		System.out.println(b);
		System.out.println(a);
答案为 4 4 

字符串数据和任意数据使用+都是相连接,最终都会变成字符串

System.out.println("5+5="+5+5);

答案是:5+5=55


十.转义字符

通过"\"来转变后面字母或者符号的含义

\n 换行

\b 退格 相当于Backspace

\r 按下回车键 window系统,回车符是由两个字符来表示\r\n

\t 制表符  相当于Tab键


十一.赋值运算符和比较运算符

赋值运算符 = , +=, -=, *=, /=, %=

short a = 4 ;

a = a + 5;//两次运算,容易损失精度

a+=5;//一次赋值运算   将左右两边的和  赋值给 左边(自动完成了强转操作 )

比较运算符



十二.逻辑运算符

逻辑运算符用于连接boolean类型的表达式



true & true = true;

true & flase = false ;

false & true = false ;

false & false = false ;

&特点:只要两边的boolean 表达式结果,有一个为false ,那么结果是flase

      只有两边都为true,结果为true;

true | true = true ;

true | false = true;

false | true = true ;

false | false = false;

|特点:两边只要有一个为true结果为true

    只有两边都为flase 结果为flase

true ^ true = true ;

true ^ false = true;

false ^ true = true ;

false ^ flase = false;

^异或  就是和 "|" 有点不一样 当true ^ true = false;

^特点:两边相同 结果是 false;

      两边不同 结果是 true;


&&  

&和&& 特点  

&:无论左边是true还是false ,右边都运算

&&:当左边为false,右边不运算 

一般用&& 效率高

||

|:两边都参与运算

||:当左边为true时  右边不运算 


十三.位运算符(左移右移)

位,就是二进制位 的位  

所谓的位运算符  就是二进制运算的  运算符号 


<<:其实就是乘以2的移动位数次幂(左移变大) 例如 3<<2  相当于 3*2的2次方 = 3*4=12

>>:其实就是除以2的移动位数次幂(右移变小) 例如 3>>2 相当于 3/2的2次方 = 3/4 = 0

>>:最高位补什么由原有数据的最高位值而定

如果最高位0,右移后,用0补空位

如果最高位1,右移后,用1补空位

>>>:无论最高位是什么,右移后,都用0补


十四.位运算符(与-或-异或)

&  |  ^  ~反码  就是取反

0 视为 false

1 视为 true


负数的二进制 = 正数的二进制取反+1

要想得到负数二进制的值 = 负数的二进制-1 再取反


7 ^ 4 ^ 4 = 7;

一个书异或同一个数两次,结果还是那个数


十五.位运算符(练习)

1.最有效的方式算出2乘以8等于几?

2<<3

2.对两个整数变量的值进行互换(不需要第三方变量)

int n = 3 , m = 8 ;
三种方式:

1、

int temp = n;
 n = m ;
m = temp;

2、

 n = n + m ;//如果n和m的值非常大,容易超出int范围

m = n - m ;

 n = n - m ;

3、

 n = n  ^  m ;

m = n  ^ m;//(n^m)^m

 n = n ^ m ;//n^(n^m)

十六.三元运算符  

		//取得16进制码
		int num = 60 ;
		
		//获得最低4位  通过&15
		int n1 = num&15;
		//打印最低位的16进制码
		System.out.println((n1>9)?(char)(n1-10+'A'):n1);
		//获得下一组四位,将数右移4位
		int temp = num>>>4;
		int n2 = temp&15;
		System.out.println((n2>9)?(char)(n2-10)+'A':n2);

(条件表达式)?表达式1:表达式2;
如果条件为true,运算后的结果是表达式1;
如果条件为false,运算后的结果是表达式2;

十七.语句(if语句)

1.if(条件表达式){

执行语句;

}

2.if(条件表达式){

执行语句;

}else{

执行语句;

}

3.

if(条件表达式){

执行语句;

}else if(条件表达式){

执行语句;

}

......

else{

执行语句;

}

if语句特点:
a,每一种格式都是单条语句。
b,第二种格式与三元运算符的区别:三元运算符运算完要有值出现。好处是:可以写在其他表达式中。
c,条件表达式无论写成什么样子,只看最终的结构是否是true 或者false;

十八.语句(Switch)

Switch语句

格式:

Switch(表达式){

case 取值1
执行语句;:

break;

case 取值2:执行语句;

break; .........

default:

执行语句;

break;

switch语句特点:
a,switch语句选择的类型只有四种:byte,short,int ,char。
b,case之间与default没有顺序。先执行第一个case,没有匹配的case执行default。
c,结束switch语句的两种情况:遇到break,执行到switch语句结束。
d,如果匹配的case或者default没有对应的break,那么程序会继续向下执行,运行可以执行的语句,直到遇到break或者switch结尾结束。


if和switch语句很像,具体什么场景下,应该用哪个语句呢 ?

如果判断的具体数值不多,并且符合byte short int char 这四种类型

虽然两个语句都可以使用,建议使用swtich语句,因为效率稍高。


其他情况:对区间判断,对结果为boolean类型判断,使用if

if的使用范围更大。


---------------------- android培训java培训、期待与您交流! ----------------------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值