学习方法

  • 循序渐进 亲手敲
  • 坚持
  • 自律
  • 找伴

课程

课程分为四个阶段

  1. java的核心编程
    • java基础理论(第一周)

java运行环境
java的数据类型

java的运算符
java条件判断 *

java循环迭代
java数组

  • 面向对象(第二周)(核心重点)

特点:学习比较难,使用很简单

对象
方法
权限修饰符
抽象类
接口

  • java核心API方法(第三周)

别人写好的东西,拿过来用
容器集合(用的最多)

  • 异常处理、IO流、异常处理、线程、网络编程(第四周)

  • MySql JDBC数据库(第五周)

  1. javaWeb编程

HTML、CSS、javaScript、jquery、bootstrap(Web前端)
Serlet、JSP(后台)

  1. 框架应用(企业应用技术)

SMM框架(Spring、SpringMvc、MyBatis)
SpringBoo他(市场最多)
linux、git、nginx、redis
Vue(前端)

  1. 提高阶段(分布式)

MQ、ES、MyCat
SpringCloud、SpringCloud Alibaba

计算机理论基础

  1. 1. 计算机的·组成
  2. 1. 软件、程序、以及计算机语言的关系
  3. 1. 计算机的发展史

java的发展历程

Main

考虑搞搞java17 为的是用最新的SpringBoot库

简单、结构中立、面向对象、分布式、可移植、高性能、多线程、高性能、多线程、健壮性、安全性高、动态编程语言

Java环境变量配置

如图
image.png选择环境变量

image.png
新建一个系统变量
image.png
在编辑名为path的系统变量
image.png
添加%JAVA_HOME%\bin 以及%JAVA_HOME%\jre\bin的系统变量

第二阶段使用服务器Tomcat 使用java编成,会识别JAVA_HOME 变量,故将JAVA_HOME做成一个常量,常量里面放的是jdk的根目录。

Java技术三个平台

javaSE 标准版(开法桌面应用)
javaEE 企业版(开发企业级应用)
javaME 移动版(开发嵌入式)//不咋用了

重要常识

java技术组成:java编程语言+java平台

JDK java开发工具包 包含了JRE , 适用于源码运行
JRE java运行环境 包含了JVM , 适用于字节码运行
JVM java虚拟机

java在虚拟机里面运行(跨平台性)
JDK>JRE>JVM

c类语言必须在window下运行(不可跨平台)

进制转化

HEX 十六进制 前缀为0X;
DEC 十进制 ;OCT 八进制 ;BIN 二进制0

hellowworld代码演示

  1. 源代码
    public class Test{
     public static void main(String [] args){
         //正斜杠 java的单行注释
         System.out.print("HellowWorld!");
     }
    }
    
    public class 类名{}
    类名必须和文件名保持一致

遇到的问题1:

第4行注释不成立?GBK类型报错

编码方式的使用

图片.png
在dos中使用utf-8编码方式编译

  1. 运行原理

jvm (java虚拟机)
Test.java[源码] 通过编译(javac.exe)翻译成 字节码文件(.class) 通过解释器(java.exe)解释成机器语言(执行)
ClassLoder(默认会加载字节码文件)
微信图片_20220123115234.png
先javac 文件名.java >> 再java 文件名
image.png

  1. 换行

    System.out.print("HellowWorld!\n");
    System.out.println("HellowWorld!");
    

    上述语句等价

  2. 分包

可以把相关联的代码放在一个包下面
不同的包下面可以放相同文件名的文件

  1. IDE

集成开发环境

语言 环境 特点
java Eclipse日蚀 免费 2018.12(版本比较稳定)1~2阶段使用(适合初学者)针对java开发使用,前提需要配置好JDK环境
IDEA 收费 号称java开发神器(页面,代码自动提示较多)3~4阶段 IDES+Eclipse

win命令

ctrl+A 全选
ctrl+S 保持
ctrl+Z 撤销
ctrl+Y 下一步
win+E DA
win+L 锁屏
win+D 回到桌面

windows能自行执行的文件为:.exe .bat(p处理文件)
Linux能自行执行的文件: .sh (不全)

常用的DOS命令

dir+回车 展示当前文件下的所有子文件和子文件夹的所有内容
cd+文件夹名字+回车 去别的文件夹
cd+..+回车 回到上级文件夹
cd+\+回车 回到根目录
cd+指定目录 进入到制定目录中去,要换到其他盘符还需使用盘符:
table 自动补齐
盘符+: 跳到其他的盘
cls+回车 清屏
exit+回车 退出DOS命令框
ping+IP地址 看与ip地址ping通不通
ipconfig 查看当前IP地址

整理此章用到的dos命令符
cls 清屏
cd 文件夹跳转
image.png 换盘

使用技巧

为方便找到编译文件的位置可在对应文件夹的地址栏里使用cmd,如图:
image.png
运行中快速调出画图板输入mspaint
image.png
运行中快速调出画图板输入calc
image.png

注意:

  • E:\java 8 code>java Test.class 不用写.class后缀
  • 类的名称需要和文件名一致
  • 预定义的关键字不能打错
  • 每句程序结尾都需加英文分号
  • java中所有的符号默认采用英文形式
  • java环境的作用在于将程序员写的代码翻译给计算机使用
  • java不跨平台(源码)
  • java语言跨平台
  • 一处编译,到处执行
  • jvm是不跨平台的

乱码问题解决
image.png
将编码模式从UTF-8改为ANSI
image.png

java语言的跨平台原理:

不同平台安装的不同版本的虚拟机,但是最终解释器解释的都是同一份字节码,这个过程实现了跨平台性

遇到的问题以及自己解决的方法

javac 不能有效调用(不是可执行程序)解决方法把电脑的环境变量刷新一下

延申

args

System.out.println(args);

结果
image.png [L表示一维数组 15db9742表示十六进制编码
[Ljava.lang.String;@15db9742 表示为当前数组对象的内存地址

第一种异常

System.out.println(args[0]);

打印
image.png
Exception: 异常
java.lang.ArrayIndexOutOfBoundsException: 0 数组索引越界

image.png在数组第一位传入admin打印(可以在运行时空格传参)
异常详见异常章节

集成开发环境 IDE

市场上常用产品(企业主流使用)

  - Eclipse
  - IDEA

Eclipse环境

作用:区块化,便于管理、维护、项目工作的分配
定义:使用小写字母,域名倒置,工程名下的包按模块划分

java fx插件 用以开发桌面程序以及开发移动设备程序
swing插件 GUI图形界面设计的安装包

工程编码方式

常用:GBK ,UTF-8

名称 解释 细节
GBK 简体中文 GB2312(国内用这个)
BIG5 繁体中文
ISO-8859-1 国际编码 不含中文
UTF-8 万国码(一种) 0~65535(多国使用)
ASCII 美国信息标准交换码 0~127特殊的符号,数字,字母
Unicode java默认采用的编码
万国码(包含utf-8 utf-16)
前128为就是ASCII,包含中文,0~65535
例:20013 中

ASCII需记住的几位:

意义 十进制位数 二进制位数(可不记)
0 48 00110000
9 57
A 65 01000001
Z 90
a 97 01100001
z 122

*大小写相差32

Unicode编码表需记住的几位:

前128位为ASCII码,取值范围65535

意义 十进制数
a 97
A 65
0 48

eclipse的编好的API

image.png

流程

  1. create a Java Project 入门级 创建JavaSE工程

protect name 项目名称

  1. 打开终端控制台 window ->show view -> console
  2. 新建一个类

image.png

  1. 包名:域名倒置写法

例:
域名:www.baidu.com 若是百度的项目,包名需倒置
包名:com.公司名.项目名.功能名称
image.png
package:文件所在的包路径(类所在的文件夹)
name:源码文件名(类名)
image.png项目展示区域

  1. 敲代码

image.png代码编写区域

  1. 编译

空白处右键 run as
image.png

  1. 输出

结果在控制台输出
image.png结果展示区域

  1. 工程文件夹

image.png
bin存放源码编译后的字节码文件
src存放源码文件

Eclipse导入工程

  1. 项目展示区空白处右键import导入

image.png

  1. 将已存在的工程导入工作区Existing Projects into Workspace

image.png
Select root directory 选择目标工程位置
勾选 Copy projects into workspace
image.png

注意:image.png
当工程上有红叉时(jdk的版本不一样导致的问题、未绑定、没有 整个jdk环境不对),选择红叉工程右键选择Build Path>>Configure Bulid Path>>Libraries>>Add Library>>JRE System Library>>Workspace default JRE(JDK)

工程重命名方法

项目展示区操作如下
image.png
或快捷键F2

项目删除

选择delete
image.png
勾选 Delete project contents on disk
删除在磁盘工作区内的工程内容
image.png

Copy 与Copy Qualified Name

copy
image.png复制到粘贴板的是文件名
输出
HelloWorld

copy qualified name
image.png复制到粘贴板的是类的全限定类名(字节码的位置)
输出
com.woniuxy.demo1.HelloWorld

常用快捷键

键位 功能
alt+↑/↓ 选中代码的上下行移动
shift+home/end 选中 window系统自带
ctrl+D 删除一行
ctrl+F 搜索代码 eclipse
ctrl+Z 向前撤销一步
ctrl+Y 向后撤销一步
ctrl+1 快速修正,自动补全等号前的内容 eclipse
ctrl+shift+T 搜索类class(含API) eclipse
ctrl+shift+R 搜索类class eclipse
光标放在第一行首部按住shift+↓ 选中多行
鼠标先点选中的首部按住shift,鼠标再点需选文本的尾部
alt+/ 自动提示代码 eclipse
多行选中+tab 选中行整体进4位
多行选中+shift+tab 选中行整体退4位
菜单source>>format 自动格式化代码 eclipse

java内部设定

标识符

组成:关键字+自定义符号
关键字举例:public class static void
自定义符号举例:Test1 main String args System out println
标识符的命名规范(必须遵守):

  • 标识符只能由字母,数字,_ ,以及$ 组成
  • 标识符数字不能开头,而且严格区分大小写,但是长度不受限制
  • 标识符一定不能是Java的关键字

开发时的规范 (不遵守 ,程序不会报错 ,但是项目经理会让你重写)

  • 类名,方法名,变量名必须遵从“驼峰命名法”,类名遵从”大驼峰”,其它都是“小驼峰”

关键字

被Java征用的标识符,就叫关键字 (不需要程序员不能定义)
Java有50个关键字:

abstract boolean break byte case
catch char class const continue
default do double else extends
assert final finally float for
goto if implements import instanceof
int interface long native new
strictfp package private protected public
return short static super switch
synchronized this throw throws transient
try void volatile while enum

const 与goto 都是C++遗留下来的关键字, 但是Java程序员从不用它。const被final替换了,goto跳转指针用的,所以不用! Java还有3个保留字 true false null

方法/封装

为了实现某种特殊的功能而封装的一串代码
方法的位置:类中,其他方法外
方法内只能调用其他方法,不能再声明方法

语法

访问修饰符 方法返回值  方法名(参数列表){
            方法体
}

如例,double类型数相减保证精度问题

public static double sub(double d1,double d2) {//声明一个方法,(形式参数:接受参数)
        BigDecimal bd1 = new BigDecimal(d1+"");
        BigDecimal bd2 = new BigDecimal(d2+"");
        double result = bd1.subtract(bd2).doubleValue();
        return result;
    }

BigDecimal :对于超过十六位有效位的数进行精确计算

运算符

加法

注意:输出时有字符情况变量会变成字符,加号作用改变为拼接
见下例:

int x = 3;
int y = 5;
int result = x+y;
System.out.println(x + "+" + y + "=" + x + y );
System.out.println(x + "+" + y + "=" + result );
System.out.println(x + "+" + y + "=" + (x + y) );

结果输出为:
image.png

减法(normal)

乘法

使用*号表示乘号

除法

/默认对商取证
当需要有精确小数时可以让被除数*1.0见例

int i = 10;
int j = 3;
System.out.println(i/j);
System.out.println(i*1.0/j);

结果
image.png

取余

    判断数字奇偶性
int num = 3;
if(num % 2 == 1) {
    System.out.println(num + "是奇数");
}else {
    System.out.println(num + "是偶数");
}

自增自减运算符

i++;i—;++i;—i;
i+=1; i-=1;//符合赋值运算符
i=3;i/=3; i%=3;//自乘自除
b+=1;等效于*b=(int)(b+1)
;但是java中直接b=b+1语法是有错误的

关系运算符

== > < >= <= != 重点 : == 对于基本数据类型来说只会比较数值 具体的字符串是个常量

String s = "1" + "2" + "3";
String s2 = "12" + "3";
System.out.println(s == "123");//true
System.out.println(s2 == "123");//true
System.out.println(s == s2);//true

String ss1 = "1";
String ss2 = "2";
String ss3 = "3";
String ss4 = ss1 + ss2 + ss3;
System.out.println(ss4 == "123");//false
System.out.println(ss4.equals("123"));//true

注意:变量里面拼接不会改变字符串的地址
变量与变量拼接会产生新的地址//false,而使用equals方法就可以直接比较字符串内容

逻辑运算符

或 与 非 | & !
短路或 ||
短路或语法:表达式1||表达式2
逻辑:当表达式1为true,则不执行表达式2,结果为true
意义:提高程序的效率

System.out.println(5>2 || 10/0 >4);/ 10/0 会报算数逻辑错误,此例因为使用短路逻辑故不会执行

短路与&&
短路与语法:表达式1 && 表达式2
逻辑:当表达式1为false,则不执行表达式2,结果为false
意义:提高程序的效率

System.out.println(2>5 && 10/0 >4);

位运算符

与 & 或 | 异或 ^ 左移 << 右移 >>
所有的位运算符针对的都是二进制数的运算
重点:左移 << 右移 >>

按位与 &

System.out.println(3 & 5);//结果为1
System.out.println(4 & 5);//结果为4

3:0011 5:0101 &两者都为1时才成立—> 1
4:0100 5:0101 &两者都为1时才成立—> 4

按位或 |

System.out.println(3 | 5);//结果为7
System.out.println(3 | 4);//结果为7

3:0011 5:0101 |两者只要有一位为1就成立—> 7
3:0011 4:0100 |两者只要有一位为1就成立—> 7

按位异或 ^

System.out.println(3 ^ 5);//结果为6
System.out.println(3 ^ 4);//结果为7

3:0011 5:0101 ^两者只有不相同时才成立—> 6
3:0011 4:0100 ^两者只有不相同时才成立—> 7
简易加密
例子

//甲方加密
int a = 10;
int b = 666;//口令
int mw = a^b;//简易密文

//乙方解密
int result = mw^a;
System.out.println(result);

左移右移 << >>

只能再二进制下执行,重要优势在于它可实现高效运算

System.out.println(16 >> 2);//16右移两位 得4
System.out.println(3 << 2); //3 左移两位 得12

16:1 0000 >>2 -> 0 0100:4
3: 0011 >>2 -> 1100:12
意义:
num>>n -> num/2的n次方(整除)
num< num*2的n次方

三元运算符

语法: 表达式?结果1:结果2
执行流程:当表达式成立时返回结果1,否则返回结果2

String result = num % 2 == 0 ? "偶数" : "奇数";

科学计数法

默认是double类型
例:1e3—>1.0*10^3

分支

条件分支

单分支选择if…else

语法:
if(boolean){
条件成立后执行的代码
}else{
条件不成立后执行的代码
}
部分可使用三元运算符来代替

import java.util.Scanner;
……

Scanner scanner = new Scanner(System.in); 
System.out.println("请输入一个整数:");
int num = scanner.nextInt();

//单分支选择
if(num % 2 ==0) {
    System.out.println("是个偶数");
}else {
    System.out.println("是个奇数");
}

//等价于
//三元运算符
String result = num % 2 == 0 ? "偶数" : "奇数";
System.out.println(num + "是" + result);

多分支条件选择

语法:if(boolean){
……
}else if(boolean){
……
}else{
}

开关选择语句

语法:switch(key){
case key:
break;
default:
break;
}
例子:

public static void main(String [] args){
        Scanner scanner = new Scanner(System.in);
        //1.模拟一个登录注册退出的功能实现
        loadUI();
        //2.使用switch……case实现
        String option = scanner.nextLine();
        switch(option){
            case "1":
                loginUI();//调用外部代码
                mainUI();
                break;
            case "2":
                registerUI();
                break;
            case "0":
                System.out.println("正在退出程序,请稍后……");
                System.exit(5);
                break;
            default:
                System.out.println("您的输入有误");
        }
        scanner.close();
    }

例中key用的类型是字符串型,经总结long 类型不能做key,float、double类型不能做key,boolean类型不能做key

重点:switch的穿透现象
没有break;将case依次执行了
一般现象
代码:

……
int num = 1;
        switch (1) {
        case 1:
            System.out.println("11111");
            //break;
        case 2:
            System.out.println("11111");
            break;
        case 3:
            System.out.println("11111");
            break;
        default:
            System.out.println("default");
            break;
……

结果输出:
图片.png
特殊现象

int num = 5;
        switch (num) {
            default:
                System.out.println("default");
                //break;
            case 1:
                System.out.println("11111");
                break;
            case 2:
                System.out.println("22222");
                break;
            case 3:
                System.out.println("33333");
                break;
        }

结果:
图片.png

循环分支

while

语法:while(boolean){……}
//满足条件一直循环

for

语法:for(初始化一个变量;循环条件boolean;计数器累加(更新循环变量)){……}
//满足条件一直循环

do……while

先执行一次后判断
语法:do{……}while(boolean);
//满足条件一直循环

数组

遍历

String[] names = {"张三","李四","王五","赵六"};

for(int i = 0; i < names.length; i++){
    System.out.println(names[i]);
}
//上下等价
for(String i:names){//for……each方式遍历数组
    System.out.println(i);
}

String i:names遍历整个数组

Debug调试

先加断点再debug调试—>switch
Step Over完成现在这一步进入下一步
Resume 断点之间查询(中间自动执行)(主要检查断点)

附录

规范

标识符规范

只能以字母数字_$来定义,不可以数字开始

开发的规范

类名,方法名,变量名必须遵从“驼峰命名法”
类名遵从大驼峰,其他都是小驼峰
大驼峰:HelloWorld
小驼峰:helloWorld

见名知意

注释的规范

关键语句需要文字说明
// 单行注释
/……/ 多行注释
/*…… / 文档注释

数据类型

java是强类型语言(数据类型分的比较细)
前提:java中所有整数默认都是int类型
java中所有的小数默认都是double类型

八大基本数据类型

byte 字节型 1字节数 -128~127
short 短整型 2字节数 -32768~32767
int 整型 4字节数 -2147483648~2147483647
long 长整型 8字节数 -2^63~2^63-1
大于2147483647,若数大于此值后必加L
记住:必须要加后缀l L 建议加L有助区分
float 单精度浮点型 4字节数 32位占4个字节,精度只有23位
记住:必须要加后缀f F 建议加F有助于区分
double 双精度浮点型 8字节数 64位占8个字节,精度只有52位
boolean 布尔类型 1bit(逻辑值)1字节(内存需求取决于虚拟机) true/false
char 字符类型 2字节数 占2个字节,java中采用的是unicode编码 0~65535

long基本类型
Long引用类型比long多了个non值(空值)

引用数据类型

与基本类型的区别:内存存储的位置不一样,方式也不一样

String 字符串(字符序列)
数组
class
enum 枚举
Date

变量

一定范围内可以改变的量,再内存中占据一块空间
本质是是内存地址的别名
声明的规范:

  - 数字,字母,下划线$
  - 不能以数字开头
  - 不能直接将java预留的51个关键字作为变量名
  - 变量名要见名知意
  - 变量满足驼峰式写法(单词的首字母大写)

大驼峰:ProductCount 用于声明类名 接口 枚举,所有单词首字母大写
小驼峰:productCount 用于声明变量 方法名除第一个单词外所有单词首字母大写

成员变量——>(c中)全局变量 class类下定义
局部变量 方法内部定义、代码块、方法参数

注意:
成员变量若不主动值,虚拟机会自动赋值(初始化)

long int short byte 0
float double 0.0
char ‘/u0000’
boolean false
引用类型 null

局部变量必须初始化(给个初始值)

补充——代码块

……class……
{//代码块
    String country = "中国";
    System.out.println(coutry);//有输出
}
{
    System.out.println(coutry);//无输出
}
……main ……
……

常量

不可更改的数据
适用于项目中永远不会发生改变的数据
语法: final 类型 变量名=值;
常量的变量名需要全部单词大写,单词之间使用下划线连接,例:PI EMPLOYEE PRODUCT_COUNT

静态常量

final

强制类型转换
语法:(类型)结果
例: byte a = (byte)(a+1);
System.out.println(1.0+””);//任何数值+“”都会转成字符串

自动类型转换(隐式转换)
①小类型可以给大类型赋值,自动类型转换
例: byte a = 10; short b = a;
②扩展
1.float > int,所以可以进行 int 给 float 类型赋值,double > float > long > int > char > short > byte
byte、short、char可以自动转换为int,int可以自动转换为float,float可以自动转换为double

注意:

byte a = 10;
short b = 11;

b = a;//只是大放小,不是自动类型转换
2.char不可被比自己小的类型范围赋值,

类型下的内存溢出
当数据已经到达该数据类型的临界值时,任然要加1,会导致内存溢出,其值为负的最大值
且溢出规律遵循时钟循环规律(mod)
例:

byte num1 = 127, num2 = 127;//已经达到byte类型上限127
num1 = (byte)(num1 + 1);
num2 = (byte)(num2 + 128);
System.out.println(num1);
System.out.println(num2);

输出结果image.png

字符类型
特殊:字符参与运算就会自动转成它对应的Unicode编码表中的十进制数,如:

char ch = 'a';
System.out.println(ch+0);

输出—->97

字符串 (另起一行)

java中的字符串使用双引号来定义,类型String,属于引用类型,对于引用类型比价逻辑比较的是对象的地址,即两串字符串也许内容相等,但由于声明的地址不同,逻辑比较会不一样(拼接出来的字符串会产生新的地址)
字符串有索引(index从零开始)
需要掌握以下功能

字符串的长度 string.length
字符串的拼接 string1 + string2
比较字符串内容是否相等 string1.equals(string2)
获取字符串中的指定字符
字符串的头与具体字符进行比较 string1.startsWith(string2)
字符串的尾与具体字符进行比较 string1.endsWith(string2)

代码段:

package com.woniuxy.demo2;

/**
 * 引用数据类型:字符串 20%
 * @author Administrator
 *
 */
public class Demo6 {

    public static void main(String [] args) {
        String s = "中国上海";
        String s1 = "2020";
        String s2 = s+s1;
        String s3 = "中国上海2020";

        System.out.println(s3==s2);
        //结果为false,s3与s2的地址不同,==对于引用类型比较的是对象的地址

        //字符串的长度
        int length = s.length();
        System.out.println(length);
        //字符串的拼接
        System.out.println(s+s1);

        //重点:比较两个字符串中的内容是否一致
        boolean equals = s3.equals(s2);
        System.out.println(equals);

        //如何获取字符串中的指定字符
        String str = "中国加油!";
        System.out.println(str.charAt(0));

    }
}

注意:java是面向对象编程,字符串中没有c一样的’\0’结束符,替代方案可用 .length() 来使用
一旦访问过头(超出字符串原有长度)就会报错(索引越界)
重点:比较两个字符串中的内容是否一致

特殊字符打法

意义 打法
回车 \n
制表位 \t
引号 \“
\ \\

分号在Java中表示一句话的结束

中文在unicode编码下的范围

基本 u\4E00~u\9FA5


Eclipse环境下的注释

单行注释 Ctrl+/ 直接使用 取消再按一次Ctrl+/
多行注释 Ctrl+shift+/ 选中想要注释的文本内容使用 取消再按一次Ctrl+shift+\

输入相关代码和样例

package com.woniuxy.demo1;
import java.util.Scanner;

public class Q1 {

        public static void main(String [] args) {
            Scanner input = new Scanner(System.in);
//            try {
                char value = input.next().charAt(0);
                if(value >= 48 && value <= 57) {
                    System.out.println("输入为数字");
                }else if(value >= 65 && value <= 90 ){
                    System.out.println("输入为大写字母");
                }else if(value >= 97 && value <= 122){
                    System.out.println("输入为小写字母");
                }else {
                    System.out.println("输入为符号");
                }
//            }
//            finally {
                input.close();
//            }

        }
}

其中

控制台键盘输入

import java.util.Scanner;
...
    public static void main(String [] args){
        Scanner input = new Scanner(System.in);
          //java.util.Scanner scanner = new java.util.Scanner(System.in);
        //import语句不要了可以这样写

        char value = input.next().charAt(0);
        ...
        input.close();
    }
package com.woniuxy.demo3;
import java.util.Scanner;

public class Demo5 {
    public static void main(String [] args) {
        //重点控制台键盘录入 new Scanner(source)
        Scanner scanner= new Scanner(System.in);
        String uname = scanner.nextLine();//是以换行作为结束符
        //读取一行,会产生程序堵塞
        scanner.close();
    }
}

手动在控制台输出内容并且按回车键(回车后会自动释放阻塞)
为必要语句

使用Scanner 需要导入一个包 位置在java文件夹下util文件夹下的Scanner.class的类
import 导入一个类 使用了Scanner的方法 input被创建,最后需要被close
(大致意思需精确补充内容)

scanner.next() 以空格为结束符
scanner.nextLine() 以回车未结束符
scanner.nextLong() 长整型
scanner.nextInt() 整型
scanner.nextshort() 短整型
scanner.nextByte() 字节型
scanner.nextDouble() 双精度浮点型
scanner.nextFloat() 单精度浮点型
scanner.nextBoolean() 布尔类型
scanner.next().charAt() 单字符

Java中传入

代码

public class Test{

    public static void main(String [] args){

        System.out.println(args);
    }
}

输出

image.png

System.out.print("AAAAA");//①
System.out.println("BBBBB");//②
System.out.print("CCCCC\n");//③

①不换行
②换行
③换行

一些常用方法

Random常用方法

import java.util.Random
Random random = new Random();

random.nextInt() 获取int范围内的一个任意数
random.nextInt(int round) 范围任意数,左开右闭
random.nextfloat() [0.0 , 1.0)

math类的常用方法

Math.floor(num) 向下取整
Math.round(num) 四舍五入
Math.ceil(num) 取不小于num的最小整数(向上取整) 可以考虑直接强制类型转换
Math.abs(num) 取绝对值
Math.random() 随机取0~1的数 可用Random包来代替
Math.sqrt(num) 开方
Math.pow(num1,num2) num1的num2次方

详见:
https://www.cnblogs.com/fireyjy/p/4720929.html

equals方法

语法:a.equals(b)
例:
boolean equals = s1.equals(s2); //boolean是布尔类型的声明,s1.equals(s2)表示比较字符串内 s1 与 s2 是否一致

boolean equals = s3.equals(s2);
System.out.println(equals);

结果
image.png

subtract方法

减法
语法:a.subtract(b) //a减去b
例:

double result = a.subtract(b).doubleValue();//doubleValue()表示取双精度类型数值

charAt方法

获取字符串的某一位
语法:string.charAt(index)
列:

String str = "中国加油!";
System.out.println(str.charAt(0));

结果—>image.png

Scanner方法

输入详见前面传入部分,此处不再赘述

String.valueOf方法

将任意类型的数据转换成字符串型
语法:String.valueOf(任意数据类型)

String str = String.valueOf(任意数据类型);