------- android培训、java培训、期待与您交流! ----------
1 Java语言基础组成:关键字、标识符、注释、常量变量、运算符、语句、函数、数组
a 标识符:在程序中自定义的一些名称。
组成:由26个字母大小写,数字0-9,_和$组成。
规则:数字不可以开头,不可以使用关键字,严格区分大小写。
注意:main不是关键字,但可以被JVM所识别的特殊字符。
b java中的名称规范:
包名:多单词组成时所有字母都小写。
类名接口名:多单词组成时,所有单词的首字母大写。
变量名和函数名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写。
常量名:所有字母都大写,多单词时每个单词用下划线连接。
2 常量分类
整数常量:所有整数
二进制:0和1,满2进1
十进制:0-9,满10进1
八进制:0-7,满8进1,用0开头
十六进制:0-9,A-F,满16进1,用0x开头表示
小数常量:所有小数
布尔型常量:只有两个值true和false
字符常量:将一个数字字母或者符号用单引号‘ ’标识
字符串常量:将一个或者多个字符用双引号“ "标识
null常量:只有一个数值就是null
3 进制
特点:进制越大,表现形式越短。
进制转换:
十进制--二进制:对十进制数进行除2运算,从右向左依次写余数(余数0也写)
二进制--十进制:二进制乘以2的过程,从右向左依次乘以2的次幂(0次幂、1次幂、二次幂等),结果相加。(110=0*2(0)+1*2(1)+1*2(2))
0 0 1 1 0 1 0 1=32+16+4+1
128 64 32 16 8 4 2 1
另外:八个二进制构成一个字节,一个字节最大能表示255
二进制--十六进制:四个进制位就是一个十六进制位
十进制 :90
二进制 :0101 1010
十六进制:5 A =0x5A
二进制--八进制:三个进制位就是一个八进制位
十进制 :90
二进制 :01 011 010
八进制 :1 3 2 =0132
十进制--十六进制:
方法一:十进制转为二进制再转为十六进制
方法二:十进制数除以16的余数从右向左依次写
十进制--八进制:
方法一:十进制转为二进制再转为八进制
方法二:十进制数除以8的余数从右向左依次写
十六进制--十进制:十六进制数从个位、十位、百位依次乘以16的0、 1、2次幂的结果相加。
八进制--十进制:八进制数从个位、十位、百位依次乘以8的0、1、2次幂的结果相加。
4 负数的二进制表现形式:正数的二进制取反加1
6=110 整数占用4个字节,即32位二进制
6=00000000 00000000 00000000 00000110(只不过110前面的0省去不写)
取反 11111111 11111111 11111111 11111001
加1 +00000000 00000000 00000000 00000001
-6 = 11111111 11111111 11111111 11111010
规律:负数的二进制最高位是1 正数的二进制最高位是0
5 变量,就是将不确定的数据进行存储,也就是需要在内存中开辟一个空间。通过明确数据类型、变量名和数据来完成。java语言是强类型语言,对于每一种数据都定义了明确的数据类型,在内存中分配了不同大小的内存空间。
变量定义格式: 数据类型 变量名 = 变量值
注意:控制变量值要在数据类型范围之内。
例如:int x=4;
byte y=8;
short s=8777;
long l=234234;
float f=2.3f;
double d=3.369;
char ch='3';
char ch1=' ';
boolean b=true;
基本数据类型
数值型
整数类型:byte(8个二进制 ) short(16个二进制) int(32个二进制) long
浮点类型:float (单精度,四个八位二进制) double(双精度,八个八位二进制,精度更高)
字符型char
布尔型boolean
引用数据类型
类class
接口interface
数组[]
整数默认:int 小数默认:double
6 强制类型转换
表达式数据类型自动提升
所有的byte short char的值都将被提升为int型
如果一个操作数是long型,计算结果就是long型
如果一个操作时是float型,计算结果就是float型
如果一个操作数是double型,计算结果就是double型
注意:byte b=3;
b=b+2; //有问题,因为b是byte类型,整数2默认是int类型,b+2是int类型。正确方式:b=(byte)(b+2);//强制转换数据类型
System.out.println('a');//结果——a,打印字符a
System.out.println('a'+1);//结果——98,表达式中,a提升数据类型为int,对应编码表里数值97,表达式结果为98,所以打印98
System.out.println((char)('a'+1));//结果——b,表达式结果98强制转换为char类型,对应编码表b,因此打印b。
7 运算符
取模运算符%,也就是两数相除后的余数。(取模运算符两边可以是小数)
1%5=1 7%6=1 5%5=0
规律:左边小于右边值为左边,左边等于右边值为0,若有负数,则只看左边,左边负数则负数,左边正数则正数。
除号/ int x=6789;
x=x/1000*1000;
System.out.println(x);//x=6000
+ 符号有三个意思:加号,数字相加;正号,表示正数;字符串连接符,将两个字符串相连接。(字符串数据和任何数据使用都是相连接,最终都会变成字符串。例如:System.out.println("5+5="+5+5);
运算结果为:5+5=55
)
8 转义字符:通过\来转变后面字母或符号的含义。
System.out.println("hello1");//ln表示打印后换行。
System.out.println("hello2");
打印后结果为:hello1
hello2
System.out.print("hello1");
System.out.print("hello2");
打印后结果为:hello1hello2
常用转义字符
\n:换行。linux中换行用n表示,windows中可以用\n或\r表示
\b:退格。相当于backspace
\r:按下回车键。
\t:制表符,相当于tab键。
需要注意:System.out.println("\"hello\"");//结果"hello",带双引号。
System.out.println("\\hello\\");//结果\hello\,带反斜杠。
char ch1=‘\n’;//正确
char ch2=’\t‘;//正确
char ch3=‘你’;//正确,汉子两个字节,char 两个字节
9 逻辑运算符,用于连接boolean类型的表达式。
& 与,两边都为真时结果才为真。(两边都运算)
^ 异或,只有一边为真一边为假结果才为真
! 非,TRUE为FALSE FALSE为TRUE
| 或,只要有一边为真,结果就为真
&&短路,左边为假时,右边不运算。其他与&一样。
||短路,左边为真时,右边不运算。
10 位运算符,对二进制的运算,先转为二进制,再运算,空出的位用离空位最近的数字来补。
<<左移,3<<2 = 12 (0011——1100),越往左移数越大
规律:3<<n位,也就是3*2的n次幂
>>右移,6>>2 = 1 (0110——0001),越往右移数越小
规律:6>>n位,也就是6除以2的n次幂,取整数舍弃小数
>>>无符号右移,无论正负,右移后空出的位都用0来补
& 与运算,6&3=2 两边转为二进制再进行运算
110
& 011
——--
010
| 或运算,
^ 异或运算,一个数异或一个数两次,结果还是那个数
~ 反码,就是取反。~6(110)=-7
练习:1、2*8=? 2<<3即可,用位移运算费非常高效。
2、不用第三方变量交换两个变量mn的值
一: n=m+n;m=n-m;n=n-m;
二: n=n^m; m=n^m;n=n^m;
11 三元运算符,(条件表达式)?表达式1:表达式2;
int x=2,y;
y=(x>1)?100:200;
12 if语句
方式一:if(条件表达式)
{
执行语句
}
该种情况,{}可以不写,程序会自动执行离if最近的执行语句去执行。
方式二:if(条件表达式)
{
执行语句
}
else
{
执行语句
}
该种情况,{}可以不写。
if else结构 简写形式:变量=(条件表达式)?表达式1:表达式2;
三元运算符:
好处:可以简化if else代码
弊端:因为是一个运算符,所以运算完必须要有一个结果。
方式三:if(条件表达式)
{
执行语句
}
else if(条件表达式)
{
执行语句
}
else if (条件表达式)
。。。。。。。。多重elseif
13 switch语句
表达式值只接受byte short int char,case1234与default语句位置可以随意,但执行时从第一个case开始。若case值均不匹配,且default没有break语句,则switch不再进行判断,而直接往下执行一切可以执行的语句直到遇到break或大括号。
switch(条件表达式)
{
case 值1:
{
执行语句1
break;
}
case 值2:
{ 执行语句2
break;
}
case 值3:
{ 执行语句3
break;
}
default:
{ 执行语句4
break;
}
}
注意:if 和switch语句很像,如果判断的具体数值不多,而且符合byte short int char这四种类型,虽然这两个语句都可以使用,但建议使用switch语句,因为效率稍高。其他情况如对区间判断,对boolean判断,一般用if。
相关文章
- 黑马程序员—【Java基础篇】之语言基础———关键字、标识符、注释、常量和变量及运算符
- 黑马程序员——Java基础语法(一.关键字、标识符、注释、常量和变量、运算符)
- 黑马程序员----Java语言基础1(关键字、标识符、注释、常量和变量、运算符)
- 黑马程序员----Java语言基础1(关键字、标识符、注释、常量和变量、运算符)
- 黑马程序员_JAVA笔记02——标识符、进制、变量、运算符、if和switch语句
- 黑马程序员-----Java基础知识---常量---进制----变量---运算符(算术--赋值--比较--逻辑--位--三元)----if语句---switch语句
- 黑马程序员——Java基础语法(一.关键字、标识符、注释、常量和变量、运算符)