学习方法
- 循序渐进 亲手敲
- 坚持
- 自律
- 找伴
课程
课程分为四个阶段
- java的核心编程
- java基础理论(第一周)
java运行环境
java的数据类型
java的运算符
java条件判断 *
java循环迭代
java数组
- 面向对象(第二周)(核心重点)
特点:学习比较难,使用很简单
类
对象
方法
权限修饰符
抽象类
接口
- java核心API方法(第三周)
别人写好的东西,拿过来用
容器集合(用的最多)
异常处理、IO流、异常处理、线程、网络编程(第四周)
MySql JDBC数据库(第五周)
- javaWeb编程
HTML、CSS、javaScript、jquery、bootstrap(Web前端)
Serlet、JSP(后台)
- 框架应用(企业应用技术)
SMM框架(Spring、SpringMvc、MyBatis)
SpringBoo他(市场最多)
linux、git、nginx、redis
Vue(前端)
- 提高阶段(分布式)
MQ、ES、MyCat
SpringCloud、SpringCloud Alibaba
计算机理论基础
1. 计算机的·组成
1. 软件、程序、以及计算机语言的关系
1. 计算机的发展史
java的发展历程
略
Main
考虑搞搞java17 为的是用最新的SpringBoot库
简单、结构中立、面向对象、分布式、可移植、高性能、多线程、高性能、多线程、健壮性、安全性高、动态编程语言
Java环境变量配置
如图选择环境变量
新建一个系统变量
在编辑名为path的系统变量
添加%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代码演示
- 源代码
public class 类名{}public class Test{ public static void main(String [] args){ //正斜杠 java的单行注释 System.out.print("HellowWorld!"); } }
类名必须和文件名保持一致
遇到的问题1:
第4行注释不成立?GBK类型报错
编码方式的使用
在dos中使用utf-8编码方式编译
- 运行原理
jvm (java虚拟机)
Test.java[源码] 通过编译(javac.exe)翻译成 字节码文件(.class) 通过解释器(java.exe)解释成机器语言(执行)
ClassLoder(默认会加载字节码文件)
先javac 文件名.java >> 再java 文件名
换行
System.out.print("HellowWorld!\n"); System.out.println("HellowWorld!");
上述语句等价
分包
可以把相关联的代码放在一个包下面
不同的包下面可以放相同文件名的文件
- 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 文件夹跳转 换盘
使用技巧
为方便找到编译文件的位置可在对应文件夹的地址栏里使用cmd,如图:
运行中快速调出画图板输入mspaint
运行中快速调出画图板输入calc
注意:
- E:\java 8 code>java Test
.class不用写.class后缀 - 类的名称需要和文件名一致
- 预定义的关键字不能打错
- 每句程序结尾都需加英文分号
- java中所有的符号默认采用英文形式
- java环境的作用在于将程序员写的代码翻译给计算机使用
- java不跨平台(源码)
- java语言跨平台
- 一处编译,到处执行
- jvm是不跨平台的
乱码问题解决
将编码模式从UTF-8改为ANSI
java语言的跨平台原理:
不同平台安装的不同版本的虚拟机,但是最终解释器解释的都是同一份字节码,这个过程实现了跨平台性
遇到的问题以及自己解决的方法
javac 不能有效调用(不是可执行程序)解决方法把电脑的环境变量刷新一下
延申
args
System.out.println(args);
结果 [L表示一维数组 15db9742表示十六进制编码
[Ljava.lang.String;@15db9742 表示为当前数组对象的内存地址
第一种异常
System.out.println(args[0]);
打印
Exception: 异常
java.lang.ArrayIndexOutOfBoundsException: 0 数组索引越界
在数组第一位传入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
流程
- create a Java Project 入门级 创建JavaSE工程
protect name 项目名称
- 打开终端控制台 window ->show view -> console
- 新建一个类
- 包名:域名倒置写法
例:
域名:www.baidu.com 若是百度的项目,包名需倒置
包名:com.公司名.项目名.功能名称
package:文件所在的包路径(类所在的文件夹)
name:源码文件名(类名)项目展示区域
- 敲代码
代码编写区域
- 编译
空白处右键 run as
- 输出
结果在控制台输出结果展示区域
- 工程文件夹
bin存放源码编译后的字节码文件
src存放源码文件
Eclipse导入工程
- 项目展示区空白处右键import导入
- 将已存在的工程导入工作区Existing Projects into Workspace
Select root directory 选择目标工程位置
勾选 Copy projects into workspace
注意:
当工程上有红叉时(jdk的版本不一样导致的问题、未绑定、没有 整个jdk环境不对),选择红叉工程右键选择Build Path>>Configure Bulid Path>>Libraries>>Add Library>>JRE System Library>>Workspace default JRE(JDK)
工程重命名方法
项目删除
选择delete
勾选 Delete project contents on disk
删除在磁盘工作区内的工程内容
Copy 与Copy Qualified Name
copy复制到粘贴板的是文件名
输出
HelloWorld
copy qualified name复制到粘贴板的是类的全限定类名(字节码的位置)
输出
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) );
减法(normal)
乘法
使用*号表示乘号
除法
/默认对商取证
当需要有精确小数时可以让被除数*1.0见例
int i = 10;
int j = 3;
System.out.println(i/j);
System.out.println(i*1.0/j);
取余
判断数字奇偶性
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<
三元运算符
语法: 表达式?结果1:结果2
执行流程:当表达式成立时返回结果1,否则返回结果2
String result = num % 2 == 0 ? "偶数" : "奇数";
科学计数法
分支
条件分支
单分支选择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;
……
结果输出:
特殊现象
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;
}
结果:
循环分支
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);
输出结果
字符类型
特殊:字符参与运算就会自动转成它对应的Unicode编码表中的十进制数,如:
char ch = 'a';
System.out.println(ch+0);
字符串 (另起一行)
java中的字符串使用双引号来定义,类型String,属于引用类型,对于引用类型比价逻辑比较的是对象的地址,即两串字符串也许内容相等,但由于声明的地址不同,逻辑比较会不一样(拼接出来的字符串会产生新的地址)
字符串有索引(index从零开始)
需要掌握以下功能
字符串的长度 | |
---|---|
字符串的拼接 | |
比较字符串内容是否相等 | |
获取字符串中的指定字符 | |
字符串的头与具体字符进行比较 | |
字符串的尾与具体字符进行比较 |
代码段:
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 |
引号 | \“ |
\ | \\ |
中文在unicode编码下的范围
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);
}
}
输出
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);
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));
结果—>
Scanner方法
输入详见前面传入部分,此处不再赘述
String.valueOf方法
将任意类型的数据转换成字符串型
语法:String.valueOf(任意数据类型)
String str = String.valueOf(任意数据类型);