-----------android培训、java培训、java学习型技术博客、期待与您交流!------------
对于Java初学者,学好Java语言基础是非常重要的,这将影响将来编程的代码质量与效率。那么Java语言基础内容包括哪些呢?Java基础内容只要包括关键字、标示符、注释、常量和变量、运算符、语句、函数及数组。下面将通过Java的一个最基本入门程序来具体认识一下Java语言:
class MyFirstProgram //class表示类关键字,MyFirstProgram表示类的名称,该类作用范围为与class关键字并
{ //齐的一对{}
//整个表示为类的主函数,作用范围为一对{},其中public、static和void都表示关键字,main为主函数名称,
//String[]表示数组类型,args为数组的名称
public static void main(String[] args)
{
System.out.println("Hello World!");//输出语句,将指定的字符串打印到屏幕或dos窗口,这里打印的
//是Hello World!
}
}
虽然这是个最基本的入门程序,但是对于初学者来说,还是存在很多疑问的,比如,关键字的作用是什么?为什么要定义一个类?等等。后面将通过对基础内容的不断学习逐渐解除这些疑问。
一、关键字
1.什么是Java关键字?
Java关键字是指被Java语言赋予了特殊意义的单词。
2.Java关键字有什么特点?
关键字单词的所有字母都是由小写字母构成。
3.关键字的种类:
1)用于定义数据类型的关键字:class(类)、interface(接口)、byte(字节)、short(短整型)、int(整型)、long(长整型)、float(型)、double(双浮点型)、char(字符型)、boolean(布尔型)、void(无返回值类型)。
2)用于定义数据类型值的关键字:true(真)、false(假)、null(空)。
3)用于定义流程控制的关键字:if与else(判断)、switch与case(判断)、default(默认)、while与do(循环)、for(循环)、break(跳出循环)、continue(继续循环)、return(返回)。
4)用于定义访问权限修饰符的关键字:private(私有的)、protected(受保护的)、public(公共的)。
5)用于定义类、函数、变量修饰符的关键字:abstract(抽象的)、final(最终的)、static(静态的)、synchronized(同步的)。
6)用于定义类与类之间关系的关键字:extends(继承)、implements(实现)。
7)用于定义建立实例及引用实例,判断实例的关键字:new(创建实例)、this(本类引用)、super(父类引用)、instanceof(对象比较)。
8)用于包的关键字:package(包)、import(导入)。
9)用于异常处理的关键字:try(异常检测)、catch(异常捕获)、finally(始终执行)、throw(抛出具体异常对象)、throws(异常声明)。
10)其他修饰符关键字:native(本地)、strictfp(精确浮点)、transient(变量修饰符)、volatile(类型修饰符)、assert(断言)。
4.问题思考
1)关键字的作用是什么?
——赋予单词特殊的意义,不同的关键字具有不同的意义,使Java程序代码更加多样,功能变得模块化。
二、标示符
1.什么是标示符?
在程序中自定义的一些名称。
2.标示符的构成:由26个英文字母大小写、数字(0-9)、符号(_$)组成。
3.规则:
1)数字不可以开头。
2)不可以使用关键字。
注意:严格区分大小写,尽量使用有意义的名称,提高阅读性。
4.Java中的名称规范:
1)包名:多单词组成是所有字母都小写,如aaabbbccc。
2)类名接口名:多单词组成时,所有单词的首字母大写,如AaaBbbCcc。
3)变量名和函数名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写,如aaaBbbCcc。
4)常量名:所有字母都大写,多单词时每个单词用下划线连接,如AAA_BBB_CCC。
5.问题思考
1)为什么标示符不可以使用数字开头?
三、注释
1.什么是注释?
注释是指对Java程序代码的解释说明,以提高程序的阅读性。
2.注释的目的:
1)注解、说明、解释我们的程序,提高代码的阅读性。
2)调试程序。例如程序出现错误,可以例如注释来查找出错的地方。
3.注释方式:
注释方法有三种,即单行注释、多行注释、文档注释。
1)单行注释:符号为//,注释形式为://注释文字。
2)多行注释:符号为/* */,注释形式为:/*-------中间可以有多行注释文字-------*/。
注:多行注释不允许嵌套多行注释,否则会提高程序风险性。
3)文档注释:符号为/** */,是Java特有的注释,通常书写在类、域、构造函数、方法、定义之前。注释内容可以被JDK中的工具javadoc.exe所解析,生 成一套以网页文件形式体现的该程序分说明文档,即API。注释形式为:
/**
作者:
版本:
作用:
等
*/
注:写代码应将自己的思想通过注释先整理出来,再用代码去体现,不要每行都加注释,也不要每行都不加注释。
四、常量与变量
1.常量
1)什么是常量?
在Java程序中不能被改变的数值,就称为常量。
2)常量的类型:
整数常量:所有整数,java中有三种表现形式:十进制(0-9)、八进制(0-7,以0开头)、十六进制(0-9,A-F,用0x开头表示)。
小数常量:所有小数。
布尔型常量:true和false。
字符常量:将一个数字、字母或者符号用单引号‘ ’标识。
字符串常量:讲一个或者多个字符用双引号" "标识。
null常量:null。
2.变量
1)什么是变量?
在内存中的有一个存储区域,该区域有自己的名称(变量名)和类型(数据类型),该区域的数据可以在同一类型范围内不断变化。
2)定义变量的目的:用来不断的存放同一类型的常量,并可以重复使用。
3)变量的作用范围:一对大括号{}之间有效。
4)变量的格式:数据类型 变量名=初始化值 ,如 int a=1。
5)数据类型的划分:
数据类型分为基本数据类型和引用数据类型,详细分类如下图:
其中,byte占1个字节,short占2个字节,int占4个字节,long占8个字节,float占4个字节,double占8个字节,char占2个字节(0-65535,无负数值),boolean占1个二进制位。long和float类型赋值示例:longa=14l;float b=3.2f。
注:java程序中,整数默认是int,小数默认是double。一个汉字是由两个字节组成,因此可以将一个汉字加上双引号赋给char类型,如char a = ‘好’等。
6)强制类型转换:
什么是强制类型转换?
当程序中,数据类型需要变换时,强制让一种数据类型变成另一种数据类型的方式。
示例:
int a = 1; //定义一个整型变量a,初始化值为5
byte b=5; //定义一个字节变量b,初始化值为0
b=(byte)a; //将整数类型a的值强制转换成字节类型赋值给b,该行即进行了强制类型转换
注:当赋值是一个数值时,如果数值不在该数据类型的范围之内,编译就会报错,如;byte b = 5,可以正常编译是因为5在byte型数据范围(-128~127)内,但是如果把5改成128,这时候就需要强转赋值。当赋值是一个带有变量的算式时,那么整个算式的数值就不确定了,如果不是同一类型数据,就必须进行强转赋值。
7)类型的自动提升:
在运算中,当低类型数据与高类型数据进行计算时,系统会自动将表达式中的低类型数据提升到高类型,即按类型中所占最多二进制位的数据类型进行提升。例如:
byte a = 1 ;
int b=2;
b= b + 2; //b会自动提升为int类型进行运算。3.进制(补充内容)
1)什么是进制?
进制也就是进位制,是人们规定的一种计数方式,可以用有限的数字符号代表所有的数值。
2)常用的进制:
二进制:0和1,满2进1,一个字节有八个二进制位。
八进制:0-7,,满8进1,以0开头表示,三个二进制位表示一个八进制位。
十进制:0-9,满10进1。
十六进制:0-9,A-F,满16进1,以0x表示开头,四个二进制位表示一个十六进制位。
3)进制的基本转换:
二进制转十进制:比如0110,那么其转换十进制的结果为0*2^3+1*2^2+1*2^1+0*2^0=6。
十进制转二进制:将十进制数除以2反向取余即可得到,如9的二进制算法:
注:反向取余,即从下往上写,那么结果是1001。
八进制、十六进制与二进制互转:一个八进制位对应三个二进制位,一个十六进制为对应四个二进制位,如下图:
八进制、十六进制与十进制换转:同二进制与十进制互转的方法一样,这里就不作详细介绍。
负数二进制:只需将正数对应的二进制取反加1即可。如4的二进制为0000-0000 0000-0000 0000-00000000-0100,取反后加1的二进制为:1111-11111111-1111 1111-1111 1111-1100,即为-4。
注:负数的最高位都为1。
4)进制总结:
对于十进制转任何进制都可以除以该进制的满位反向取余得到,任何进制转十进制同二进制转十进制同理,即将该进制的每一位乘以该进制满位的n次幂,n的大小等于该位后面所有的位数。对于负数二进制,从后面往前数第一个不为0的位数,保留和该位数的数值一致,从该位开始,之前的每一位都进行取反,即为负数的二进制。
五、运算符
1.什么是运算符?
运算符就是执行程序代码运算的符号,会针对一个以上操作数项目来进行运算。
2.运算符的种类:
1)算术运算符:
注:字符串数据和任何数据使用 +都是相连接,最终都会变成字符串。进行取模运算时,运算的结果的符号与模数的符号相同,与被模数无关,如:-1%5=-1,而1%-5=1。
2)赋值运算符:
赋值运算符的符号有:= 、+= 、 -=、 *=、 /= 、 %= 。
示例:
int a,b,c; // 定义整数类型变量a、b、c
a=b=c =3; //把整数3同时赋值给a、b、c
short s=4; //定义短整型变量ss+=6;//将(s+6)赋给变量s,这里系统有自动强制类型转换动作
注:对于+= 、 -=、 *=、 /= 、 %=进行赋值运算符时,自动完成了强制类型转换,编译器不出现报错,因此应注意数据类型及范围,如:
byte a = 4;
a+=14.56;
下面的示例中,该形式赋值不能用在初始化定义中,否则编译不通过:
byte a+=14.56;
3)比较运算符:
注:比较运算符的结果都是boolean型,也就是要么是true,要么是false。
4)逻辑运算符:
逻辑运算符用于连接boolean类型的表达式。
&:只要两边的boolean表达式结果,有一个为false,那么结果就是false。只有两边都为true,结果为true。
|:两边只要有一个为true,结果为true;只有两边都为false,结果为false。
^:运算符两边相同结果是false,两边不同结果是true,如ture^(异或)true为假,因为运算符两边相同,注意理解。
&和&&的区别:
单&时,左边无论真假,右边都进行运算。
双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算,左右两边必须为条件表达式,否则编译不通过。
“|”和“||”的区别同理,双或时,左边为真,右边不参与运算。
5)位运算符:
<<(左移):空位补0,被移除的高位丢弃,空缺位补0。
>>(右移):被移位的二进制最高位是0,右移后,空缺位补0;最高位是1,空缺位补1。
>>>(无符号右移):被移位二进制最高位无论是0或者是1,空缺位都用0补。
&(与):二进制位进行&运算,只有1&1时结果是1,否则是0,如6&3=2,即换算成二进制进行于运算。
|(或):二进制位进行 |运算,只有0 | 0时结果是0,否则是1,如6&5=7,即换算成二进制进行或运算。
^(异或):任何相同二进制位进行 ^运算,结果是0,如1^1=0, 0^0=0。不相同二进制位 ^运算结果是1,如1^0=1, 0^1=1。
注意:7^4^4=7,因为4^4结果的二进制位全为0,再与7进行异或运算则等于其本身7,可用于加密。
~(反码):对二进制进行取反,如~6=-7。
6)三元运算符:
格式:(条件表达式)? 表达式1:表达式2;
a.如果条件为true,运算后的结果是表达式1。
b.如果条件为false,运算后的结果是表达式2。
示例:获取两个数中小数。
int a=1,b=3,temp;
temp = (a<b)?a:b;//temp变量存储的就是两个数的小数。
三元运算符的利与弊:
好处:可以简化if else代码。
弊端:因为是一个运算符,所以运算完必须要有一个结果。
7)运算符优先级:
六、语句
1.什么是语句?
语句是指程序构成的元素,这里代表程序流程控制。
2.语句的结构类型:
语句主要有3中结构:判断结构、选择结构和循环结构。
1)判断结构(if)
三种格式:
a) if(条件表达式)
{
执行语句;
}
b) if(条件表达式)
{
执行语句;
}
else
{
执行语句;
}
c) if(条件表达式)
{
执行语句;
}
else if (条件表达式)
{
执行语句;
}
……
else
{
执行语句;
}
注:第二种格式与三元运算符的区别:三元运算符运算完必须要有值出现。
语句特点:
a)每一种格式都是单条语句。
b)条件表达式无论写成什么样子,最终的结果不是true就是 false。
2)选择结构(switch)
语句格式:
switch(表达式)
{
case取值1:
执行语句;
break;
case取值2:
执行语句;
break;
…...
default:
执行语句;
break;
}
语句特点:
a)switch语句选择的类型只有四种:byte,short,int, char。JDK1.5以后可以接收枚举类型,JDK1.7以后可以接收字符串。
b)case之间与default没有顺序。先执行第一个case,最后执行default,如果case里没有break语句,则不再判断,直接执行下面的代码,遇到结束break或结束标记停止。
c)结束switch语句的两种情况:1、遇到break结束;2、执行到switch结尾结束。
d)如果匹配的case或者default没有对应的break,那么程序会继续向下执行,运行可以执行的语句,直到遇到break或者switch结尾结束,即大括号结束。
e)default 的位置可以任意,但是执行的时候是最后才执行,如果default在case语句前面,且default的语句里没有break结束,则执行完default后,不在判断case而直接执行下面的代码,直到遇到break或大括号结束。思考:if和switch语句很像,那么具体什么场景下,应用哪个语句呢?
——如果判断的具体数值不多,而且符合byte short int char这四种类型。虽然两个语句都可以使用,建议使用switch语句,因为效率稍高。其他情况:对区间判断,对结果为boolean类型判断,使用if,因为if的使用范围更广。
3)循环结构(while,do while,for)
while语句格式:
while(条件表达式)
{
执行语句;
}
do while语句格式:
do
{
执行语句;
}while(条件表达式);for语句格式:
w: for(初始化表达式;循环条件表达式;循环后的操作表达式)
{
执行语句;
}
注:for格式中,其中a为标号,可以用break w或者continue w跳出和继续指定的循环体。
while和do while的区别:while先判断条件,只有条件满足才执行循环体,而do while先执行循环体,再判断条件,条件满足,再继续执行循环体。
语句特点:
a)for里面的多个表达式运行的顺序:初始化表达式最先读且只读一次,再判断循环条件,为真就执行循环体,然后再执行循环后的操作表达式,接着继续判断循环条件,重复这个过程,直到条件不满足为止,条件表达式必须有真假,否则编译失败。
b)while与for可以互换,区别在于for为了循环而定义的变量在for循环结束就是在内存中释放。而while循环使用的变量在循环结束后还可以继续使用,如果变量只为循环的增量存在,用以控制循环的次数,则建议用for来体现,这样内存会相对优化一点。
c)最简单无限循环格式:while(true){ }, for( ; ; ){ },对于for来讲,不写条件表达式默认就是ture。无限循环存在的原因是并不知道循环多少次,而是根据某些条件,来控制循环。4)其他流程控制语句(break与continue)
break(跳出)语句:应用于选择结构和循环结构。
continue(继续)语句:应用于循环结构。
注意事项:
a)这两个语句离开应用范围,存在是没有意义的。
b)这个两个语句单独存在时,下面都不可以有语句,因为执行不到。
c)continue语句是结束本次循环继续下次循环。
d)标号的出现,可以让这两个语句作用于指定的范围。只能用于循环结构。