Java基础:Java语法基础

来源:互联网 发布:淘宝裁决之镰 编辑:程序博客网 时间:2024/04/28 06:45

1.关键字

Java中的关键字是被Java体系赋予了特殊意义的单词,又称保留字,书写上所有字母都是小写;
(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,sysnchronized;
(6).用于定义类与类之间关系的关键字:extends,implements;
(7).用于定义建立实例及引用实例,判断实例的关键字:new,this,super,instanceof;
(8).用于异常处理的关键字:try,catch,finally,throw,throws;
(9).用于包操作的关键字:package,import;
(10).其他修饰符关键字:native,strictfp,transient,volatile,assert;

2.注释

2.1 Java中的注释格式

(1).单行注释://注释文字
被注释的文字不会被JVM解释执行;
(2).多行注释:/* 注释文字 */
同样被注释的多行代码不会被JVM解释执行;
(3).文档注释:/**  注释文字  */
Java特有的注解,注释的内容可以被JDK的工具javadoc所解析,生成一套以网页文件形式体现的该程序的说明文档;
注:多行注释和文档注释不能嵌套;

2.2 Java中注释的作用

(1).用来添加文字信息,解释程序,提高代码阅读性;
(2).用来调试程序;

3.标识符

标识符是Java中有开发人员自定义的一些用来标识的名称;
标识符定义的原则:见名知意;
标识符:由字母,数字,下划线,美元符组成,其中不以数字开头;
标识符定义习惯:
(1).包名:单词字母都小写;
(2).类名接口名:单词首字母大写,多个单词首字母均大写,驼峰式;
(3).方法名变量名:首单词小写,多个单词首单词小写,其他单词首字母大写;
(4).常量名:所有字母均大写,多个单词间用下划线分隔;

4.常量

常量:不能改变的数值;
(1).整数常量;
(2).小数常量;
(3).布尔型常量:true,false;
(4).字符常量:单引号;
(5).字符串常量:双引号;
(5).空常量:null;

5.数制

二进制:每一位的取值只有0和1,8位一字节;
十进制:Java7.0,以0b开头;
八进制:以0开头,3位二进制;
十六进制:以0x开头,4位二进制;
在计算机内存中,所有的数据都是以二进制存在的;
对于数值:都是以补码的形式存在,即正数就是其本身,负数就是其对应的正数的二进制取反加1,高位为1;

6.基本数据类型

Java语言是一种强类型语言,必须为每一个变量声明一种类型;
*基本数据类型:
*数值型
*整数
(1).byte:1字节;
(2).short:2字节;
(3).int:4字节,默认类型;
(4).long:8字节,数据值后面加l/L标记;
注:在Java中,整型的范围与运行Java代码的机器无关,这不同于C/C++针对不同的处理器选择最为有效的整型;Java程序必须保证在所有机器上都能都得到相同的运行结果,所有每一种数据类型的取值范围必须固定;
*小数
(1).float:单精度,4字节,数据值后面加f/F标记;
(2).double:双精度,8字节,默认类型;

*字符型

char:2字节,单引号标记;

注:区分字符1(char 1 = 49)和数字1,其Unicode编码不同;

Unicode:char a = 97;char A = 65;

*布尔型

boolean:true/false;

*引用数据类型:

(1).类

(2).接口

(3).数组

7.变量

(1).变量的概念:内存中的一个存储区域,该区域有自己的名称(变量名)和类型(数据类型),该区域的数据可以在同一类型范围内不断变化;

在内存中开辟一块空间对不确定的数据进行存储;

(2).为什么定义变量:用来不断的存放同一类型的常量,并可以重复使用;
(3).变量的作用范围:一对{ 花括号内 }使用有效;
(4).变量的初始化:
Java中不区分变量的声明和定义,在声明一个变量后必须使用赋值语句对变量进行显示初始化,不能使用没有被初始化的变量;
初始化时,变量使用final修饰,可以用来定义常量,只能被赋值一次;

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

8.数据类型转换

Java程序在运行时,经常会需要将一种数值类型转换为另一种数值类型;
(1).数据类型之间的正常转换;

上图所示:实箭头表示无信息丢失的转换,虚箭头表示可能有精度损失的转换;
当使用上面两种数字进行二元操作时,先要将两个操作数转换为同一种类型,然后进行计算;
具体的转换原则可以用(if...else if...else)的形式表示如下:
如果,两个操作数中有一个是double类型,另一个操作数就会转化为double类型;
否则,如果,两个操作数中有一个是float类型,另一个操作数就会转化为float类型;
否则,如果,两个操作数中有一个是long类型,另一个操作数就会转化为long类型;
否则,两个操作数都将被转换为int类型;
(2).强制类型转换cast:
强制类型转化的格式是在圆括号中给出想要转换的目标类型,后面紧跟待转换的变量名;使用这样的类型转换方式可能会损失某些信息;
如果试图将一个数值用一种类型强制转换为另一种类型,而又超出了目标类型的表示范围,就会截断成一个完全不同的数据值;
使用实际的Java程序来演示类型转换;
/*eg:强制类型转换*/package com.zr.day02;class CastDemo{public static void main(String[] args){byte b = 1;b = b + 2;//计算时会出现错误:cannot convert from int to byte//右边的b在计算是时,其类型会自动提升为int型,计算结果为int型;b = (byte)(b + 2);//使用强制类型转换;System.out.println(b);}}

9.运算符

9.1 算术运算符
(1).加减乘除:+ - * /;
(2).取模:%,取模运算符号只看左边被模数,右边模数不管正负;
(3).自增自减:++  --,注意运算的前后顺序;
(4).字符串连接符:+,字符串数据和任何数据使用“+”都是相连接,最终的结果为字符串;
9.2 转义字符
转义字符:使用反斜杠转变其后字符的含义;
\n:换行,linux系统下的回车符,DOS环境也可识别;
\b:退格,相当于backspace键;
\r:回车键,Windows系统中的回车符有两个字符组成:\r\n;
\t:制表符,相当于Tab键;
\':表示单引号;
\":表示双引号;
\\:表示反斜杠;
9.3 赋值运算符
(1).等于:=
(2).加等:+=
(3).减等:-=
(4).除等:/=
(5).模等:%=
演示赋值运算符:
package com.zr.day02;class DengDemo{public static void main(String[] args){byte b = 2;b = b + 3;//报错,cannot convert from int to byte;b+=5;//正常,作赋值运算,赋值时自动完成强转动作;}}

9.4 比较运算符
等于:==
不等于:!=
大于:>
小于:<
大于等于:>=
小于等于:<=
判断某对象是否是某类的实例:instanceof
注:比较运算的结果都是布尔型;
9.5 逻辑运算符
逻辑运算符链接的是布尔型的表达式;
与:&,左右两边的表达式都计算;
或:|,左右两边的表达式都计算;
非:!
异或:^,相同为假,相异为真;
短路与:&&,左边表达式为假时,不计算右边表达式;
短路或:||,左边表达式为真时,不计算右边表达式;
9.6 位运算符
位运算符直接操作数据的二进制;
左移:<<,最低位补0,数值越来越大,移动n位后的值:原始值×(2的n次方);
右移:>>,带符号移位,负数最高位补1,正数最高位补0;移动n位后的值:原始值/(2的n次方);
无符号右移:>>>,不带符号的右移,不管正负数最高位都补0;
与运算:&;
或运算:|;
异或运算:^;相同为0,相异为1;
注:一个数异或一个数两次还是原来那个数;
/*需求:不使用第三方变量,交换两个变量的数值;思路:1.使用第三方变量临时存储;2.按照某种运算方式,对变量进行运算;*/package com.zr.day02;class YiHuoDemo{public static void main(String[] args){int m = 3;int n = 5;System.out.println("m="+m+",n="+n);//使用第三方变量临时存储;int temp = m;m = n;n = temp;System.out.println("使用临时变量:m="+m+",n="+n);m = 3; n = 5;//使用加法运算:其缺陷是可能会出现运算结果出现溢出;m = m + n;n = m - n;m = m - n;System.out.println("使用加法运算:m="+m+",n="+n);m = 3; n = 5;//使用异或运算:一个数异或另一个数两次结果还是这个数;m = m ^ n;n = m ^ n;m = m ^ n;System.out.println("使用异或运算:m="+m+",n="+n);}}

反码:~(波浪线),1变0,0变1;
9.7 三元运算符

三元运算的格式:(判断)条件表达式?表达式1:表达式2;

相较于if...else...语句:运算结果必须要有一个结果,if...else...语句可以没有结果;

10.语句

10.1 顺序语句
Java程序的执行默认情况下是从上到下顺序执行的;
块作用域:块是指由一对花括号括起来的若干条简单的Java语句,块确定了变量的作用域,块可以嵌套;
10.2 判断语句

(1).if(条件表达式){ 执行语句 }

(2).if(条件表达式){ 执行语句 }  else{ 执行语句 }

(3).if(条件表达式){ 执行语句 }  else if(条件表达式){ 执行语句 }  ...可以多组...  else{ 执行语句 }

为一个整体,只要有一个if满足条件就执行结束;

10.3 选择语句
(1).switch语句的格式:
switch(表达式值)
{
case 取值1:
............
break;

case 取值2:
............
break;

.....多组....

default:
.............
break;
}
(2).switch语句可以接受的表达式类型:byte,short,int,char;
JDK5.0可以接收枚举类型的值,JDK7.0可以接收字符串类型的值;
(3).case代码块和default代码块在书写上可以没有顺序,但是在运行的时候,总是先执行case代码块(不论default代码块是在case块的前面还是后面);
(4).switch语句的结束:要么执行到break语句,要么执行到switch语句的大括号结束;
(5).穿透现象:如果匹配的case或者default没有对应的break,那么程序会继续向下执行,运行可以执行的语句,知道遇到break或者大括号结束;
注:if语句和switch语句的比较
如果判断的具体数值不多,而且符合byte,short,int,char这四种类型,建议使用switch语句;
如果对区间进行判断,对布尔值进行判断,使用if语句,if语句的使用范围更广;
10.4 循环语句
当需要对某些语句执行很多次的时候就使用循环结构;
循环结构可以嵌套;
(1).while(条件表达式){ 执行语句 }
(2).do{ 执行语句 }while(条件表达式);
(3).for(初始化表达式;循环条件表达式(boolean);循环后的操作表达式){ 执行语句 }
初始化表达式和循环后的表达式可以有多条语句,语句之间用逗号隔开;
条件表达式必须要能判断真假,否则编译错误;
使用for循环嵌套打印九九乘法表:
/*需求:使用for循环嵌套实现九九乘法表的打印;*/package com.zr.day03;class ForForDemo{public static void main(String[] args){for(int x=1; x<=9; x++){for(int y=x; y<=9; y++){System.out.print(x+"*"+y+"="+(x*y)+"\t");}System.out.println();}}}
打印结果:


注1.while语句和do...while...语句:
while语句先判断条件,只有条件满足才执行循环体;
do...while...语句先执行循环体,再判断条件,无论条件是否满足,循环体至少会被执行一次;
注2.while语句和for语句:
while语句和for语句可以互换,区别在于for为了循环而定义的变量在for循环结束后就会在内存中释放,而while循环使用的变量在循环结束后还可以继续使用;
注3.无限循环:
while(true){ ... }或者for(;;){ .... },并不确定到底要循环多少次,而是根据某些条件来控制循环;
10.5 中断语句
(1).break语句:用于选择结构和循环结构;跳出当前循环;
(2).continue语句:用于循环结构;结束本次循环,继续下次循环;
(3).使用标号可以标识某个循环结构,break 标号或者continue 标号,可以跳转到指定的循环结构执行;
(4).当break和continue单独存在时,语句后面不能出现任何语句,因为无法执行到;

11.方法/函数

11.1 方法的概念:
Java中的方法也可以称之为函数,方法就是定义在类中的具有特定功能的一段独立的小程序;只有在被调用时才会执行;定义函数可以将功能代码进行封装,便于对该功能的复用;

11.2 方法的格式:

修饰符 返回值类型 方法名(参数类型 形式参数1,参数类型 形式参数2,...,参数类型 形式参数n)

{ //方法体

执行语句;

return 返回值;

}

(1).返回值类型:方法运行后的结果的数据类型,如果没有具体的返回值,则函数的返回值类型定义为void;

(2).参数类型:形式参数的数据类型,可以没有参数,即参数列表为空;

(3).形式参数:变量,用来存储调用函数时传递给方法的实际参数;

(4).实际参数:由调用者传递的数据;

(5).return:用于结束函数,如果方法返回类型为void,return语句可以省略;

(6).返回值:返回给调用者的值;

(7).方法是定义在类中的,在方法内部只能调用方法,不能在方法内部定义方法;

11.3 如何定义方法:

(1).方法是一个独立的功能,那么该功能的运算结果是什么应该先明确,即明确方法的返回值类型;

(2).接下来明确在定义该功能的过程中是否需要未知的内容参与,即明确方法的参数列表;

方法的参数列表是有顺序的;

11.4 方法的重载:OverLoad

当类中定义的功能相同,但是参与运算的未知内容不同时,可以定义一个相同的方法名称来表示该功能,为方便阅读,通过参数列表来区分不同的同名方法;

方法的重载和方法的参数个数和参数类型以及参数列表的顺序有关,和函数的返回值类型等没有关系;

0 0