一、注释
java中注释有三种:
- 单行注释://
- 多行注释:/* */
- 文档注释:/** */
二、标识志符与关键字
标志符由字母、下划线和数字组成
- 第一个字符不能是数字
- 标志符不能是关键字
关键字
abstract | assert | boolean | break | byte |
case | catch | char | class | const |
continue | default | do | double | else |
enum | extends | final | finally | fioat |
for | goto | if | implements | import |
inatanceof | int | interface | long | native |
new | package | private | protected | pulic |
return | strictfp | short | static | super |
awitch | synchronized | this | throw | throws |
transient | try | void | volatile | while |
三、数据类型
java的数据类型分为两大类:
1.基本数据类型
逻辑类型:boolean
数值类型:
1.整数类型:int(4字节)
byte(1字节)
short(2字节)
long(8字节)
2.浮点型:float(4字节)
double(8字节)
3.字符型:char(2字节)
2.引用数据类型:
- 类
- 接口
- 数组
四、类型转换
类型按精度从低到高:
byte,short,char->int->long->fioat->double
- 运算中,不同类型的数据先转化为同一类型,然后在进行运算
转换类型
- 强制转换:(类型)变量名 高---低
- 自动转换: 低--高
注意点:
- 不能对布尔值进行转换.
- 不能把对象类型转换为不相干的类型
- 在把高容量转换到低容量的时候,强制转换
- 转换的时候可能存在内存溢出,或者精度问题
五、运算符
Java 语言支持如下运算符:
- 算术运算符:+,-,*, %,++,--
- 赋值运算符:=
- 关系运算符:>,<,>=,<=,==,!=instanceof
- 逻辑运算符:&&,11.!
- 位运算符:&,|,A,~,>>(除2),<<(乘2),>>>(了解!!!)·
- 条件运算符:?:(如果成立就是赋值前面的,反之就是赋值后面的)
- 扩展赋值运算符:+=,-=,*=,/=
1.自增自减运算
++x,--x表示先加(减)1,再使用x
x++,x--表示先使用x,后加1
2.逻辑运算符和逻辑表达式
逻辑与:&&(两个变量都为真,结果才为true)
逻辑或:||(两个变量有一个为真,结果才为true)
六、包进制
为了更好地组织类,Java提供了包机制,用于区别类名的命名空间。
包语句的语法格式为:
package pkg1[. pkg2[. pkg3..]];
一般利用公司域名倒置作为包名;
为了能够使用某一个包的成员,我们需要在Java 程序中明确导入该包。使用“import”语句可完成此功能:
import package1[.package2..].(classname|*);
七、JavaDoc
javadoc命令是用来生成自己API文档的
参数信息
@author 作者名
@version 版本号 (ramo.htmt
@since 指明需要最早使用的jdk版本 王生成.\help-doc.html..
@param参数名
@return 返回值情况
@throws 异常抛出情况
public class Doc {
String name;
/**
* @author Kaungshen
* @param name
* @return
* @throws Exception
*/
public String test(String name) throws Exception{
return name;
}
}
八、Java流程控制
1.Scanner对象
之前我们学的基本语法中我们并没有实现程序和人的交互,但是Java给我们提供了这样一个工具类,我们可以获取用户的输入。java.util.Scanner是Java5的新特征,我们可以通过Scanner类来获取用户的输入。
- 基本语法:
Scanner s = new Scanner(System.in);
- 通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前我们一般需要 使用hasNext()与hasNextLine()判断是否还有输入的数据。
import java.util.Scanner;
public class Demoe1 {
public static void main(String[] args) {
// 创建一个扫描器对象,用于接收键盘数据
Scanner scanner = new Scanner(System.in);
System.out.print1n("使用next方式接收:");
//判断用户有没有输入字符串
if(scanner.hasNext())[
//使用next方式接收
String str = scanner.next();
System.out.print1n("输出的内容为:"+str);
}
//凡是属于IO流的类如果不关闭会一直占用资源
scanner.close();
}
}
next():
- 一定要读取到有效字符后才可以结束输入。
- 对输入有效字符之前遇到的空白,next()方法会自动将其去掉。
- 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
- next()不能得到带有空格的字符串。
nextLine():
- 以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符。
- 可以获得空白。
2、顺序结构
- JAVA的基本结构就是顺序结构除非特别指明,否则就按照顺序一句一句执行。顺序结构是最简单的算法结构。
- 语句与语句之间,框与框之间是按从上到下的顺序进行的,它是由若干个依次执行的处理步骤组成的,它是任何一个算法都离不开的一种基本算法结构。
3 、选择结构
(1) if-else语句
if(表达式){
若干语句
else{
若干语句}
一条if-else语句的作用是根据不同的条件产生不同的操作,执行法则如下:if后面“()”表达式的值必须是boolean类型。如果表达式的值为true,则执行紧跟着的复合语句;如果达式的值为false,则执行else后面的复合语句。
(2)嵌套的if结构
使用嵌套的 if...else 语句是合法的。也就是说你可以在另一个if或者else if语句中使用if或者 else if语句。你可以像if 语句一样嵌套else if...else。
if(布尔表达式 1){
//如果布尔表达式 1的值为true执行代码
if(布尔表达式2){
//如果布尔表达式 2的值为true执行代码
}
}
(3) switch多选择结构
- 多选择结构还有一个实现方式就是switch case 语句。
- witch case语句判断一个变量与、系列值中某个值是否相等,每个值称为一个分支。
switch语句中的变量类型可以是:
- byte、short、int 或者char。
- 从Java SE 7开始
- switch 支持字符串 String类型了
- 同时case 标签必须为字符串常量或字面量。
Witch(expression){ case value; //语句 break;//可选 case value: //语句 break;//可选 //你可以有任意数量的case语句 default://可选 //语句 }
4、循环结构
(1)while循环
while是最基本的循环,它的结构为:
while( 布尔表达式){
//循环内容
}
- 只要布尔表达式为true,循环就会一直执行下去。
- 我们大多数情况是会让循环停止下来的,我们需要一个让表达式失效的方式来结束循环。
- 少部分情况需要循环一直执行,比如服务器的请求响应监听等。
- 循环条件一直为true就会造成无限循环【死循环】,我们正常的业务编程中应该尽量避免死循环。会影响程序性能或者造成程序卡死奔溃
(2)do... while 循环
对于while语句而言,如果不满足条件,则不能进入循环。但有时候我们需要即使不满足条件,也至少执行一次。
do...while 循环和while 循环相似,不同的是,do...while 循环至少会执行一次。
do {
//代码语句
}
while(布尔表达式);
While和do-While的区别:
- while先判断后执行, do....while是先执行后判断
- do...while总是保证循环体会被至少执行一次
(3) for循环
虽然所有循环结构都可以用while或者 do...while表示,但Java供了另一种语句—— for循环,使一些循环结构变得更加简单。
- for循环语句是支持迭代的一种通用结构,是最有效、最灵活的循环结构。
- for循环执行的次数是在执行前就确定的。
语法格式如下:
for(初始化;布尔表达式;更新){
//代码语句
}
5、break,continue
- break在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环,不执行循环中剩余的语句。(break语句也在switch语句中使用)
- continue 语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。
九、Java方法
1、什么是方法
- Java方法是语句的集合,它们在一起执行一个功能。
- 方法是解决一类问题的步骤的有序组合
- 方法包含于类或对象中
- 方法在程序中被创建,在其他地方被引用
- 设计方法的原则:方法的本意是功能块,就是实现某个功能的语句块的集合。我们设计方法的时候,最好保持方法的原子性,就是一个方法只完成1个功能,这样利于我们后期的扩展。
2、方法的定义
Java的方法类似于其它语言的函数 是一段用来完成特定功能的代码片段,一般情况下,定义一个方法包含以下语法:
方法包含一个方法头和一个方法体。
下面是一个方法的所有部分:
- 修饰符:修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。
- 返回值类型:方法可能会返回值。returnValueType是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。在这种情况下,returnValueType是关键字void。
- 方法名:是方法的实际名称。方法名和参数表共同构成方法签名。
- 参数类型:参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。
形式参数:在方法被调用时用于接收外界输入的数据。
实参:调用方法时实际传给方法的数据。 修饰符 返回值类型 方法名(参数类型 参数名)
- 方法体:方法体包含具体的语句,定义该方法的功能。
3、方法的调用
- 调用方法:对象名.方法名(实参列表)
- Java 支持两种调用方法的方式,根据方法是否返回值来选择。当方法返回一个值的时候,方法调用通常被当做一个值。例如:
int larger = max(30, 40);
- 如果方法返回值是void,方法调用一定是一条语句。
System.out.println("Hello,kuangshen!");
4、方法重载
1.重载就是在一个类中,有相同的函数名称,但形参不同的函数。
2.方法的重载的规则:
- 方法名称必须相同。
- 参数列表必须不同(个数不同、或类型不同、参数排列顺序不同等)。
- 方法的返回类型可以相同也可以不相同。
- 仅仅返回类型不同不足以成为方法的重载。
3.实现理论:
- 方法名称相同时,编译器会根据调用方法的参数个数、参数类型等去逐个匹配,以选择对应的方法,如果匹配失败,则编译器报错。
5、命令行传参
有时候你希望运行一个程序时候再传递给它消息。这要靠传递命令行参数给main()函数实现。
public class CommandLine {
public static void main(String args[]){
for(int i=0; i<args.length;i++){
System.out.println("args["+ i +"]:"+ args[i]);
}
}
}
6、可变参数
- JDK 1.5开始,Java支持传递同类型的可变参数给一个方法。
- 在方法声明中,在指定参数类型后加一个省略号(..)。
- 一个方法中只能指定一个可变参数,它必须是方法的最后一个参数。任何普通的参数必须在它之前声明。
public static void printMax( double... numbers) {
if (numbers.length == 0) {
System.out.print1n("No argument passed");
return;
}
double result = numbers[e];
//排序!
for (int i = 1; i< numbers.length;i++){
if (numbers[i] > result) {
result = numbers[i];
}
}
System.out.print1n("The max value is "+ result);
}
7、递归
- 递归就是:A方法调用A方法,就是自己调用自己
- 利用递归可以用简单的程序来解决一些复杂的问题。它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。
递归结构包括两个部分:
- 递归头:什么时候不调用自身方法。如果没有头,将陷入死循环。
- 递归体:什么时候需要调用自身方法。