一:java注释
注释格式:
1、文档注释:“/**……*/”
2、单行(single-line)注释:“//……”
3、块(block)注释(有的叫多行注释):“/*……*/”
————————————————————————————————————————————————————
Java代码基本格式:
Java中所有程序代码都必须存在于一个类中,用class关键字定义类,在class之前可以有一些修饰符。格式如下:
修饰符 class 类名
{
}
注:
1、Java是严格区分大小写的。
2、Java程序中一句连续的字符串不能分开在两行中写。
————————————————————————————————————————————————————
注意 一:多行注释中不要嵌套多行注释!
二:写程序时养成写注释的习惯,开头不用急着写代码,可以先写需求,思路和步骤!
/*
需求 .....
思路 .....
步骤 .....
*/
————————————————————————————————————————————————————
2 java语言基础组成
2.1、关键字
定义:被Java赋予了特殊含义的单词。
特点:体现上都是英文小写。
1、用于类和接口的声明:class, extends, implements, interface
2、包引入和包声明:import, package
3、数据类型:byte, boolean, char, double, int, long, float, short
4、某些数据类型的可选值:flase, ture, null
5、流程控制:break, case, continue, default, do, else, for, if, return, switch, while
6、异常处理:catch, finally, throw, throws, try
7、修饰符:abstract, final, native, private, protected, public, static
8、操作符:instanceof
9、创建对象: new
10、引用:this, supper
11、方法返回类型:void
三、标识符
Java中的包、类、方法、参数、变量的名字,可以由任意顺序的大小写字母、数字、下划线(_)、美元符号($)组成,但不能以数字开头,不能是Java中的保留关键字。
包名:多单词组成时所有字母都小写。
aabbcc
类的接口名:多单词组成时,所有单词的首字母大写。
AaBb
变量名和函数名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写。
aaBb
常量名:所有字母都大写。多单词时每个单词用下划线连接。
AA_BB
三、常量
1、整形常量
十进制
十六进制——以0x或0X开头
八进制——以0开头
长整形——以L(l)结尾
Binary是二进制的意思,
Octal是八进制的意思,
Hex是十六进制的意思。
int a = 10;
// 以二进制结果打印
System.out.println(Integer.toBinaryString(a));
————————————————————————
(1): 十进制 6 转换成二进制: 十进制转二进,除2取余数;
方式: 结果为110
——————————————————————————
(2): 二进制转化为十进制:二进制转换为十进制,乘以2的幂数。
如1110的十进制等于:
23*1+22*1+21*1+20*0=14。
——————————————————————————
(3): 十进制与八进制和十六进制的互转 如下图:
100011 转换成八进制:43 ,转换成十六进制:23
——————————————————————————
(4): 如果一个数是负数,它的二进制怎么算呢?
如图:-6的二进制表达形式为 6的二进制取反加1
2、浮点数常量
单精度浮点数——后面加f(F)
双精度浮点数——后面加d(D)
注:
a.小数常量的默认类型是double型,所以float类型常量后一定要加f(F)。
b.浮点数常量可以用指数形式表示,如5.022e+23f
3、布尔常量
true或false
4、字符常量
由英文字母、数字、转义序列、特殊字符等的字符所表示,如'a'、'\t'等。
Java中的字符占两个字节,是用Unicode码表示的,也可以使用'\u'加Unicode码值来表示对应字符,如'\u0027'。
常用的转义字符有:
\t——表示接受键盘输入,相当于按了一下回车键
\n——表示换行
\t——表示制表符,相当于Tab键
\b——表示退格键,相当于Back Space键
\'——表示单引号
\”——表示双引号
\\——表示反斜杠“\”
5、字符串常量
字符串常量用双引号括起来。
6、null常量
null常量表示对象的引用为空。
——————————————————————————
——————————————————————————
四、变量
概念:内存中的一个存储空间。有自己的名称(变量名)和类型(数据类型)。
作用:用来不断的存放同一类型的数据,并可以重复使用。
定义变量的格式:数据类型 变量名 =初始化值;
数据类型:
Java中有两种数据类型:1、基本数据类型;2、引用数据类型。这里主要讲解基本数据类型。
说明:Java程序中,整数默认:int 小数默认:double
类型的自动提升:
在运算中,当低类型数据与高类型数据进行计算时,系统会自动将表达式中的低类型数据提升到高类型。如:
byte b = 3 ; int c;
c= b + 2; //b会自动提升为int类型进行运算。
强制类型转换:
当程序中,数据类型需要变换时,可以进行强制转换。如:
byte b = 3;
b = b + 4;//报错
b = (byte)b+4;//强制类型转换,强制将b+4的结果转换为byte类型,再赋值给b。
五、运算符
1、算术运算符
如果a<b;
%代表取模运算 任何数%1=0; a%a=0; a%b=a;
a.b中有一个负数,则取 左边被模数!
注:进行取模运算时,如果有负数,运算结果取决于运算左边有没有负数。
字符串数据和任何数据使用 +都是相连接,最终都会变成字符串。
2、赋值运算符
符号:= += -= *= /= %=
例: int a,b,c; a=b=c =3;
int a = 3; a+=5;//等同运算a=a+5;
——————————————————————————
注意点: short s=2;
s=s+2; //编译报错,因为s会被提升为int类型,运算后的结果还是int类型,无法赋值给short类型
s+=2; //编译通过,因为+=运算符在给s赋值时,自动完成了强制转换操作
——————————————————————————
3、比较运算符
逻辑运算符用于连接boolean类型的表达式。
"&" 与符号特点:只要两边的boolean表达式结果,有一个为false,那么结果就是false。只有两边都为true,结果为true。
"|" 或符号特点:两边只要有一个为true,结果为true;只有两边都为false,结果为false。
"^" 异或符号特点:两边相同结果是false,两边不同结果是true。
&和&&的区别:
单&(单与)时,左边无论真假,右边都进行运算;
双&(双与)时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。(运算效率高)
““||” 双或时,左边为真,右边不参与运算。
5、位运算符
左移:<<;空位补0,被移除的高位丢弃,空缺位补0。
3<<2 运算如图:
注意: a<<b=a*2
右移: >> ;被移位的二进制最高位是0, 右移后,空缺位补0;最高位是1,空缺位补1。
无符号右移: >>> ;被移位二进制最高位无论是0或者是1,空缺位都用0补。
与: & ;二进制位进行&运算,只有1&1时结果是1,否则是0。
或: | ;二进制位进行 |运算,只有0 | 0时结果是0,否则是1。
异或: ^ ;任何相同二进制位进行 ^运算,结果是0;1^1=0 , 0^0=0。 不相同二进制位 ^运算结果是1。1^0=1 , 0^1=1。
注意:一个数异或同一个数两次,结果还是原数(数字不变)【可用于数据加密解密:第一次异或运算相当于加密,第二次异或运算相当于解密】
注意 :( 与 ,或, 异或)在位运算中逻辑和比较运算符中方法相同
练习题
练习题:1)最有效率的算出2乘上8等于几? 答案 2〈〈3
2) 对于两个整数变量的值进行互换(要求不能用第三方变量) ? 答案如下图:
第一种方法:
第二种方法:
两种方法都可以,大家可以慢慢品味~
3) 用比较运算符和位运算符将十进制60转换成十六进制!
参考思路如下图
反码:~;对二进制进行取反。
6、 三元运算符
格式:
(条件表达式)?表达式1:表达式2;
a)如果条件为true,运算后的结果是表达式1;
b)如果条件为false,运算后的结果是表达式2;
示例:
获取两个数中大数。
int x=3,y=4,z;
z = (x>y)?x:y;//z变量存储的就是两个数的大数。
运算符的优先级:
一、程序流程控制
也称语句,主要有:判断结构、选择结构和循环结构。
1、 判断结构——if
if语句的三种格式:
if.....
if....else....
if....elseif.....else.....
if语句特点:
1,每一种格式都是单条语句。
2,if...else 与三元运算的区别:三元运算符运算完要有值出现。好处是:可以简化if else代码。弊端是必须返回一个结果
3,条件表达式无论写成什么样子,最终的结果不是true就是 false。
2、 选择结构——switch
switch语句格式:
switch(表达式)
{
case :.......
break;
case:
........
break;
…...
default:
.......;
break;
}
switch语句特点:
1)switch语句选择的类型只有四种:byte,short,int, char。
2)case之间与default没有顺序。先执行第一个case,没有匹配的case执行default。
3)结束switch语句的两种情况:1、遇到break结束;2、执行到switch结尾结束。
4)如果匹配的case或者default没有对应的break,那么程序会继续向下执行,运行可以执行的语句,直到遇到break或者switch结尾结束。
注:JDK1.5以后可以接收枚举类型,JDK1.7以后可以接收字符串。
注意: if...elseif...else....和switch语句区别。具体什么场景下,应用哪个语句呢?如果判断的具体数值不多,而且符合byte short int char这四种类型。虽然两个语句都可以使用,建议使用switch语句,因为效率稍高。
其他情况如对区间判断,boolean类型判断,使用if,if的使用范围更广。
3、 循环结构——while,do while,for
while语句格式:
while(条件表达式)
{
......;
}
do while语句格式:
do
{
.....;
}while(条件表达式);
while和do while的区别:
while:先判断条件,只有条件满足才执行循环体。do while:先执行循环体,再判断条件,条件满足,再继续执行循环体。
do while:无论条件是否满足,循环体至少执行一次。
注意“;”不要写错地方,如果错写在了上面 y<3 的后面,程序将进入死循环,并不会继续向下读取语句!!
for语句格式:
for(初始化表达式;循环条件表达式;循环后的操作表达式)
{
.......;
}
说明:
a,for里面的连个表达式运行的顺序,初始化表达式只执行一次,判断循环条件,为真就执行循环体,然后再执行循环后的操作表达式,接着继续判断循环条件,重复这个过程,直到条件不满足为止。
b,while与for可以互换,区别在于: for中的变量在for循环结束就是在内存中释放。
而while循环使用的变量在循环结束后还可以继续使用。
c,最简单无限循环格式的两种形式:while(true){}和 for(;;){},对于for来讲,表达式默认就是ture。无限循环存在的原因是并不知道循环多少次,而是根据某些条件,来控制循环。
下面一个图片可以看出,for语句的执行先后顺序: 打印输出结果为:a dc dc...
4、其他流程控制语句——break,continue
break (跳出循环,跳到循环尾)语句:应用范围:选择结构和循环结构。
continue(继续循环,跳到循环头)语句:应用于循环结构。
注:
1,这两个语句离开应用范围,存在是没有意义的。
2,这个两个语句单独存在时,下面都不可以有语句,因为执行不到。
3,continue语句是结束本次循环继续下次循环。
4,标号的出现,可以让这两个语句作用于指定的范围。只能用于循环结构。
注意:多个for循环嵌套时,break 可以指定跳出哪个循环!!
continue 同理,多个for循环,也可以指定!
二、函数
定义:定义在类中的具有特定功能的一段独立小程序。也称方法。
格式:
修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,…)
{
执行语句;
return返回值;
}
其中:
返回值类型:函数运行后的结果的数据类型。
参数类型:是形式参数的数据类型。
形式参数:是一个变量,用于存储调用函数时传递给函数的实际参数。
实际参数:传递给形式参数的具体数值。
return:用于结束函数。
返回值:该值会返回给调用者。
特点:
定义函数可以将功能代码进行封装,便于对该功能进行复用。 函数只有被调用才会被执行。 函数的出现提高了代码的复用性。 对于函数没有具体返回值的情况,返回值类型用关键字 void表示,那么该函数中的 return语句如果在最后一行可以省略不写。注意:
a) 函数中只能调用函数,不可以在函数内部定义函数。
b) 定义函数时,函数的结果应该返回给调用者,交由调用者处理。
注意,返回类型为void的方法不可以用printIn()调用,如下图
函数的一个重要特性——重载(override)
概念:在同一个类中,允许存在一个以上的同名函数,只要它们的参数列表的个数或者参数类型不同即可。
特点:与返回值类型无关,只看参数列表。
好处:方便于阅读,优化了程序设计。
注意: 重载和返回值类型没有关系,两个方法只有返回类型不同时不能同时存在于一个类中!!
示例:
int add(int x,int y){return x+y;}
int add(int x,int y,int z){returnx+y+z;
double add(double x,double y){return x+y;}
什么时候用到重载?
当定义的功能相同,但参与运算的未知内容不同。那么,这时就定义一个函数名称以表示起功能,方便阅读,而通过参数列表的不同来区分多个同名函数。