自用的学习笔记,若有错误欢迎指出。
java包机制
为了更好地组织类,java提供了包机制,用于区别类名的命名空间。
包语句的语法格式为:
package pkg1[.pkg2[.pkg3...]];
一般利用公司域名倒序来作为包名字。例如:www.baidu.com
,如果要建包的话:com.baidu.www
这样来命名。
导入包
当我们需要调用一些函数或者某一个包的成员的时候,我们需要在java程序中明确的导入该包。使用import
关键字来实现包导入。
import package1[.package2...].(classname|*);
import java.util.Date;
使用*
来导入这个包下面的所有类
import com.shadowprism.base.*;
JavaDoc
javadoc
命令是用来生成自己的API文档的。- 参数信息
@author
作者名@version
版本号@since
指明需要最早使用的JDK版本@param
参数名@return
返回值情况@throws
异常抛出情况
文档注释可以给类加注释的同时也可以给方法加注释。
package com.shadowprism.base;
/**
* @author shadowprism
* @version 1.0
* @since 1.8
*/
public class Doc {
String name;
/**
* @param name
* @return
* @throws Exception
*/
public String test(String name){
return name;
}
}
使用cmd在java文件目录下生成JavaDoc文档。
- 使用
cd /d F:你的文件\你的文件
来定位到你的文件位置 - 在java文件目录下输入
javadoc -encoding UTF-8 -charset UTF-8 Doc.java
#使用-encoding UTF-8 -charset UTF-8是为了防止文章出现乱码
javadoc -encoding UTF-8 -charset UTF-8 Doc.java
**有待解决的问题:
- 在cmd中输入的
javadoc
输出结果为“不是内部指令…”,但是在jdk
的bin
目录下却可以运行javadoc -help
。
java流程控制
Scanner对象
java提供的一个工具类,我们可以获取用户的输入。java.util.Scanner
是Java5的新特征,我们可以通过Scanner
类来获取用户的输入。
基本语法:
Scanner scan = new Scanner(System.in);
通过Scanner
类的next()
于nextLine()
方法获取输入的字符串,在读取前我们一般需要使用hasNext()
与hasNextLine()
判断是否还有输入的数据。
实例:
import java.util.Scanner;
public class Demo01 {
public static void main(String[] args) {
//创建一个扫描器对象来接收键盘数据
Scanner scan01 = new Scanner(System.in);
Scanner scan02 = new Scanner(System.in);
System.out.println("使用next方式来接收: ");
//判断用户有没有输入字符串
if (scan01.hasNext()){
String str = scan01.next();
System.out.println("输入的内容为:" + str);
}
System.out.println("使用nextLine方式来接收: ");
String str = scan02.nextLine();
System.out.println("输入的内容为:" + str);
//凡是属于IO流的类如果不关闭会一直暂用资源,建议用掉就关闭
scan01.close();
scan02.close();
}
}
注意:在hasNext()
方法中,如果输入的内容为hello world
这样带中间带空格的字符串,最终结果只会输出为hello
。需要使用hasNextLine()
方法。
next():
- 一定要读取到有效字符后才可以结束输入
- 对输入有效字符之前遇到的空白,
next()
方法会自动将其去掉 - 只有输入有效字符后才将其后面的空白作为分隔符或者结束符
next()
不能得到带有空格的字符串
nextLine():
- 以回车键ENTER为结束符,也就是说
nextLine()
方法返回的是输入回车之前的所有字符 - 可以获得空白
- 以回车键ENTER为结束符,也就是说
Scanner进阶
实例:我们可以输入多个数字,并且求其总和和平均数,每输入一个数字用ENTER键确认。如果输入了非数字就表示我们要结束输入,执行输出结果。
import java.util.Scanner;
public class Demo01 {
public static void main(String[] args) {
Scanner scanner01 = new Scanner(System.in);
double sum = 0; //求和
double average = 0; //平均数
int inputNumTimes = 0; //计算输入多少个数字
System.out.println("请输入数字:");
while (scanner01.hasNextDouble()){
double d = scanner01.nextDouble();
inputNumTimes++;
sum = sum + d; //求和
}
average = sum / inputNumTimes; //计算平均数
System.out.println("求和结果为:" + sum);
System.out.println("平均数为:" + average);
scanner01.close(); //结束进程
}
}
结构
顺序结构
- java的基本结构就是顺序结构,除非特别指明,否则就按顺序一句一句执行。
- 顺序结构是最简单的算法结构。
- 语句与语句之间,框与框之间是按照从上到下的顺序进行的,它是由若干个依次执行的处理步骤组成的,它是任何一个算法都离不开的一种基本算法结构。
if选择结构
if单选择结构
我们很多时候需要去判断一个东西是否可行,然后我们才去执行,这样一个过程在程序中用if
语句来表示。
语法:
if(布尔表达式){
//如果布尔表达式为true将执行语句
}
实例:
Scanner scanner = new Scanner(System.in);
String str = scanner.nextLine();
if (str.equals("Boy")){
System.out.println(str);
}
scanner.close();
if双选择结构
例子:如果一个公司需要收购软件,如果成功了就需要给别人支付100w。如果失败就选择自己开发软件。这样就需要有两个判断,需要一个双选择结构,所以就有了if -else
结构。
语法:
if(布尔表达式){
//如果布尔表达式为true
}else {
//如果布尔表达式为false
}
实例:
Scanner scanner = new Scanner(System.in);
System.out.println("请输入成绩:");
int i = scanner.nextInt();
if (i >= 60){
System.out.println("及格");
}else {
System.out.println("不及格");
}
scanner.close();
if多选择结构
语法:
if(布尔表达式){
//如果布尔表达式1的值为true,执行代码
}else if {
//如果布尔表达式2值为true,执行代码
}else if {
//如果布尔表达式3值为true,执行代码
}else {
//如果以上的布尔表达式都不为true,执行代码
}
实例:
Scanner scanner = new Scanner(System.in);
System.out.println("请输入成绩:");
int i = scanner.nextInt();
if (i == 100){
System.out.println("满分");
}else if (i >= 80 && 1 < 100){
System.out.println("优秀");
}else if (i >= 70 && 1 < 80){
System.out.println("良");
}else if (i >= 60 && 1 < 70){
System.out.println("及格");
}else {
System.out.println("不及格");
}
scanner.close();
if嵌套结构
语法:
if(布尔表达式1){
//如果布尔表达式1的值为true,执行代码
if (布尔表达式2){
//如果布尔表达式2的值为true,执行代码
}
}
switch多选择结构
多选择结构还有一个实现方式就是switch case
语句。
switch case
语句判断一个变量与一个系列值中某个值是否相等,每一个值称为一个分支。
switch
语句中的变量类型可以是:
byte
、short
、int
、或者char
- 从JavaSE7才开始
switch
支持字符串String
类型 - 同时
case
标签必须为字符串常量火字面量
语句:
switch(expression){
case value :
//语句
break; //可选
case value :
//语句
break; //可选
//可以有任意数量的case语句
default : //可选
//语句
}
实例:
char grade = 'A';
switch (grade) {
case 'A':
System.out.println("优秀");
break;
case 'B':
System.out.println("良好");
break;
case 'C':
System.out.println("及格");
break;
case 'D':
System.out.println("再接再厉");
break;
default:
System.out.println("未知等级");
break;
}
*如果不使用break
的话,程序会一直运行到最后一个判断。
循环结构
while
循环do...while
循环for
循环
while循环
while
循环是最基本的循环,它的结构为:
while(布尔表达式){
//循环结构
}
- 只要布尔表达式为
true
,循环就会一直下去。 - 我们大多数情况下是会让循环停止下来的,我们需要一个让表达式失效的方式来结束循环。
- 少部分情况需要循环一直执行,比如服务器的请求响应监听等。
do while循环
- 对于
while
语句而言,如果不满足条件则不能进入循环。 do...while
循环至少会执行一次循环。
int i = 0;
int sum = ;
do{
sum = sum + i;
i++;
}while(i <= 100);
System.out.println(sum); // 5050
For循环
for
循环语句是支持迭代的一种通用结构,是最有效、最灵活的循环结构。for
循环执行的次数是在执行前就确定的。
for(初始化; 布尔表达式; 更新){
//代码语句
}
实例1:计算1-100之间的奇数和偶数的和
int oddSum = 0; //初始化奇数和
int evenSum = 0; //初始化偶数和
for (int i = 0; i < 100; i++) {
if (i % 2 != 0){
oddSum += i;
}else {
evenSum += i;
}
}
System.out.println("奇数和为:" + oddSum); // 2500
System.out.println("偶数和为:" + evenSum); // 2450
实例2:用while
或者for
循环输出1-1000之间能被5整除的数,并且每行输出3个。
for (int i = 0; i <= 1000; i++){
if (i % 5 == 0){
System.out.print(i + "\t"); //这里的"\t"为转义字符
}
if (i % 15 == 0){
System.out.println();
}
}
实例3:打印九九乘法表
for (int i = 1; i <= 9; i++){
for (int j = 1; j <= i; j++){
System.out.print(i + "*" + j + "=" + (i * j) + "\t");
}
System.out.println();
}
增强型for
循环
- 在java5引入了一种主要用于或集合的增强型for循环
- java增强型for循环语法格式如下:
for (声明语句: 表达式){
//代码语句
}
- 声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此时数组元素的值相等。
- 表达式:表达式是要访问的数组名,或者是返回值为数组的方法。
break & continue
break
:在任何循环语句的主题部分,均可用break
来控制循环的流程,break
用于强行退出循环,不执行循环中剩余的语句。(break
语句在switch
语句中也有使用)continue
语句用于循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。
流程控制练习
打印一个三角形
for (int i = 1; i <= 5; i++){
for (int j = 5; j >= i; j--){
System.out.print("#");
}
System.out.println();
}
//输出结果
#####
####
###
##
#
打印一个等边三角形
//第一步:打印等边三角形的左半边
for (int i = 1; i <= 5; i++){
for (int j = 5; j >= i; j--){
System.out.print(" ");
}
for (int j = 1; j <= i; j++){
System.out.print("#");
}
System.out.println();
}
//输出结果
*
**
***
****
*****;
//第二步:打印等边三角形的另一边
//之前的不变
for (int i = 1; i <= 5; i++){
for (int j = 5; j >= i; j--){
System.out.print(" ");
}
for (int j = 1; j <= i; j++){
System.out.print("*");
}
//在此加入:
for (int j = 1; j < i; j++){
System.out.print("*");
}
System.out.println();
}
//输出结果
*
***
*****
*******
*********;
//其中等边三角形的右半边打印的是
*
**
***
****;
后记
之后,我也会继续学习java,继续更新博客。分享知识、结交朋友,感谢你的观看!
参考链接
B站:狂神说java