1.java基础
本文最后更新于344 天前,其中的信息可能已经过时,如有错误请发送邮件到2647369456@qq.com

1. 注释

​ 注释是对代码的解释和说明文字。

Java中的注释分为三种:

  • 单行注释:
// 这是单行注释文字
  • 多行注释:
/*
这是多行注释文字
这是多行注释文字
这是多行注释文字
*/
注意:多行注释不能嵌套使用。
  • 文档注释(暂时用不到):
/**
这是多行注释文字
这是多行注释文字
这是多行注释文字
*/

使用的技巧

​ 如果我们要对代码进行解释,那么就可以使用注释。

​ 当注释的内容比较少,一行就写完了,可以用单行注释。

​ 如果注释的内容比较多,需要写在多行,那么可以使用多行注释。

注意点

​ 注释的内容不会参与编译和运行的,仅仅是对代码的解释说明而已。

​ 所以,不管在注释当中写什么内容,都不会影响代码运行的结果。

关键字

概念

​ 被Java赋予了特定含义的英文单词。

​ 当我们在代码中写了关键字之后,程序在运行的时候,就知道要做什么事情了。

注意:关键字很多,不用刻意去记。

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

第一个关键字class

​ 表示定义一个类。创建一个类。

类:Java项目最基本的组成单元,一个完整的Java项目有可能会有成千上万个类来组成的。

class后面跟随的就是这个类的名字,简称:类名。

在类名后面会有一对大括号,表示这个类的内容。

举例:

public class HelloWorld{

}

解释:class表示定义类。

​ 类名:HelloWorld

​ HelloWorld后面的大括号表示这个类的范围。

常量

什么是常量

常量代表是程序运行过程中,不能再次改变的值

常量的作用

  1. 固定的值 代表计算过程中经常用到的值,便于程序计算 圆周率 3.1415926......
  2. 用来代表一个含义 1 2 3 4分别代表上下左右四个方向

什么样的值算是常量呢?

  1. 固定不变的值 算作常量 1 3.14 ‘a’ true可以任务所以基本数据类型的值 固定不变 是常量。
  2. 特殊的常量 "abc"---->String ,String 是一个引用数据类型,它的值很特殊,可以简单的视为常量。
  3. 自己创建的空间 存储一个值 , 让他固定起来 , 不能改变 final int UP = 1;

变量

什么是变量?

​ 变量指的是 程序执行过程中可以改变的,是一个内存空间(小容器)

变量就在程序中临时存储数据的容器。

变量空间在创建(声明)的时候 必须指定数据类型 变量空间的名字
变量空间 里面只能存储一个内容(值 引用)
变量空间内的内容可以改变

变量的定义格式

​ 数据类型 变量名字(空间的名字) = 数据值;

格式详解

​ 数据类型:限定了变量当中能存储什么类型的数据。

​ 如果要存10,那么数据类型就需要写整数类型。

​ 如果要存10.0,那么数据类型就需要写小数类型。

​ 变量名:其实就是这个容器的名字。

​ 当以后想要使用变量里面的数据时,直接使用变量名就可以了。

​ 数据值:真正存储在容器中的数据。

​ 分号:表示语句的结束,就跟以前写作文时候的句号是一样的。

注意

变量是一个空间,可以只创建空间 里面不存放内容

变量空间创建后是没有默认的内容 空的

空的变量空间不能拿来使用 编译错误

byte x;//声明一个变量空间,空间的名字是x 空间内要求存放的类型是byte整数

x=1;//将一个1赋值到x空间内进行储存

byte x=1;

计算机底层做了什么事情

  1. x是什么? x是变量空间 存在哪儿?栈内存里面
  2. 1是什么? 1是常量 存在哪儿? 常量缓存区里面
  3. =是什么? =是赋值 做了什么?=号从常量池/常量缓冲区里面找到1然后复制一份给变量x
  4. 这里的1在底层是二进制数哦

计算机的硬件组成
主板 CPU 声卡 显卡 网卡 电源
内存 硬盘
1.硬盘上创建了一个文件 Test.java
2.文件中的内容是我们编写的源代码(跟计算机发送指令)

        public class Test{
            public static void main(String[] args){
                byte x;
                x = 1;
            }
        }

3.将Test.java源文件---->编译---->Test.class
内容 我们看不懂 字节码 留给计算机识别
4.执行---->内存中执行
将硬盘上的Test.class内容 加载 到内存里
5.我们写好的指令 执行内存的空间 赋值 变化。。。。

  1. 栈内存相当于手枪弹夹,先进去的后出来,后进去的先出来,运行的时候,都是在栈内存中运行的
  2. 堆内存相当于是一个仓库,存东西的
  3. 最右边的这个大区域其实叫方法区 但是不是存储方法的,因为方法不能单独存在,方法是存在类里面的。
  4. 特点:整个方法区存储的元素只有一份且不能改变。

常用的数据类型

​ 整数:int

​ 小数:(浮点数)double

​ 其他数据类型稍后讲解

举例:

public class VariableDemo{
    public static void main(String[] args){
        //定义一个整数类型的变量
        //数据类型 变量名 = 数据值;
        int a = 16;
        System.out.println(a);//16

        //定义一个小数类型的变量
        double b = 10.1;
        System.out.println(b);//10.1
    }
}

变量的注意事项

  • 变量名不能重复
  • 在一条语句中,可以定义多个变量。但是这种方式影响代码的阅读,所以了解一下即可。
  • 变量在使用之前必须要赋值。

案例:

public class VariableDemo2{
    public static void main(String[] args){
        //1.变量名不允许重复
        //int a = 10;
        //int a = 20;
        //System.out.println(a);

        //2.一条语句可以定义多个变量
        //了解。
        //int a = 10, b = 20, c = 20,d = 20;
        //System.out.println(a);//?
        //System.out.println(b);//?

        //3.变量在使用之前必须要赋值
        int a = 30;
        System.out.println(a);
    }
}

变量的命名规则

变量命名只能使用字母 数字 $ _
变量第一个字符 只能使用 字母 $
变量第一个字符 不能使用数字
注:
是下划线,不是-减号或者—— 破折号

在命名的时候,尽量使用完整的单词进行命名,比如name,moveSpeed,而不是使用缩写 n,m。

中文也是可以用来命名变量的
但是在实际工作中。。。别这么干。。。

变量的练习

​ 需求:说出公交车到终点站之后,车上一共有多少乘客?

​ 一开始没有乘客。

​ 第一站:上去一位乘客,没有下来乘客。

​ 第二站:上去两位乘客,下来一位乘客。

​ 第三站:上去两位乘客,下来一位乘客。

​ 第四站:没有上去乘客,下来一位乘客。

​ 第五站:上去一位乘客,没有下来乘客。

​ 问:到了终点站之后,车上一共多少乘客?

​ 代码解析:

public class VariableTest1{
    //主入口
    public static void main(String[] args){
        //一开始没有乘客。
        int count = 0;
        //第一站:上去一位乘客
        //在原有的基础上 + 1
        count = count + 1;
        //System.out.println(count);
        //第二站:上去两位乘客,下来一位乘客
        count = count + 2 - 1; 
        //第三站:上去两位乘客,下来一位乘客
        count = count + 2 - 1;
        //第四站:下来一位乘客
        count = count - 1;
        //第五站:上去一位乘客
        count = count + 1;
        //请问:到了终点站,车上一共几位乘客。
        System.out.println(count);//3
    }
}

数据类型

计算机储存单元

我们知道计算机是可以用来存储数据的,但是无论是内存还是硬盘,计算机存储设备的最小信息元叫位 (bit)我们又称之为"比特位",通常用小写的字母b表示。而计算机中最小的存储单元叫字节(Byte),通常用大写字母B表示(8位等于1个字节)

1B(字节)=8bit 敏感单元位(0/1)

1KB=1024B

1MB=1024KB

1GB=1024MB

1TB=1024GB

1byte==8bit 0 0000000 256种组合
用第一个bit位置来记录符号 0正数 1负数
数值的范围 -2的7次方 ~ 2的7次方-1
-128 ~ 127
以上的其他整数类型 依次乘2
short 2字节==16bit 65526种 -32768 32767
int 4字节==32bit -2147483648 2147483647
long 8字节==64bit

float 32bit 4字节
0 000000000 00000000000000000000

符号 整数部分 小数部分

Java语言数据类型的分类

  • 基本数据类型有8个
  • 引用数据类型有无限个:类class(抽象类abstract class),接口(interface),数组[],枚举enum 注解@interface

基本数据类型的四类八种

数据类型 关键字 内存占用 取值范围
整数 byte 1 负的2的7次方 ~ 2的7次方-1(-128~127)
short 2 负的2的15次方 ~ 2的15次方-1(-32768~32767)
int 4 负的2的31次方 ~ 2的31次方-1
long 8 负的2的63次方 ~ 2的63次方-1
浮点数 float 4 1.401298e-45 ~ 3.402823e+38
double 8 4.9000000e-324 ~ 1.797693e+308
字符 char 2 0-65535
布尔 boolean 1 true,false

java语言中char类型变量能不能存储一个汉字?

可以储存汉字但是存储的不是汉字本身而是编码哦

在java中,char类型是用来储存Unicode编码的,每个Unicode编码(0~65535)是16位,每个字节占8位,所以char占两个字节。而汉字占用两个字节,而且Unicode编码字符集中包含了汉字,所以,char型变量中是可以存储一个汉字的。当然,如果某个汉字没有包含在Unicode字符集合中,那么是不能被char型变量储存的。可以储存汉字但是存储的不是汉字本身而是编码哦

ASCLL 美国信息交换标准代码

a ------00000000-----97

字母 数字 符号

26*2+10+100约等于100多个 字节有256种组合

这就是为什么英文和符号和数字都是一个字节

boolean类型 0代表false 1代表true 一个比特位 1/8个字节长

但是计算机最低执行一个字节的,所以boolean类型就是一个字节哦

说明 e/E都可以

​ e+38表示是乘以10的38次方,同样,e-45表示乘以10的负45次方。

在java中整数默认是int类型,浮点数默认是double类型。

需要记忆以下几点

byte类型的取值范围:

​ -128 ~ 127

int类型的大概取值范围:

​ -21亿多 ~ 21亿多

整数类型和小数类型的取值范围大小关系:

​ double > float > long > int > short > byte

最为常用的数据类型选择:

  • 在定义变量的时候,要根据实际的情况来选择不同类型的变量。

    比如:人的年龄,可以选择byte类型。

    比如:地球的年龄,可以选择long类型。

  • 如果整数类型中,不太确定范围,那么默认使用int类型。

  • 如果小数类型中,不太确定范围,那么默认使用double类型。

  • 如果要定义字符类型的变量,那么使用char

  • 如果要定义布尔类型的变量,那么使用boolean

定义8种基本数据类型变量

public class VariableDemo3{
    public static void main(String[] args){
        //1.定义byte类型的变量
        //数据类型 变量名 = 数据值;
        byte a = 10;
        System.out.println(a);

        //2.定义short类型的变量
        short b = 20;
        System.out.println(b);

        //3.定义int类型的变量
        int c = 30;
        System.out.println(c);

        //4.定义long类型的变量
        long d = 123456789123456789L;
        System.out.println(d);

        //5.定义float类型的变量
        float e = 10.1F;
        System.out.println(e);

        //6.定义double类型的变量
        double f = 20.3;
        System.out.println(f);

        //7.定义char类型的变量
        char g = 'a';
        System.out.println(g);

        //8.定义boolean类型的变量
        boolean h = true;
        System.out.println(h);

    }
}

注意点

  • 如果要定义 一个整数类型的变量,不知道选择哪种数据类型了,默认使用int。
  • 如果要定义 一个小数类型的变量,不知道选择哪种数据类型了,默认使用double。
  • 如果要定义一个long类型的变量,那么在数据值的后面需要加上L后缀。(大小写都可以,建议大写。)
  • 如果要定义一个float类型的变量,那么在数据值的后面需要加上F后缀。(大小写都可以)
  • ​ char c = '吃';//只能一个字符哦,也可以只写一个空格,不能不写,长度必须是1

    ​ String ch = '';//String不能用单引号哦

    ​ String str1 = "吃";//改成双引号就变成字符串啦,

float和long类型注意事项

float e = 3.4F;
从double转化到float会有损失
1 3.4 常量值
存储在常量缓冲区中的
常量值的存储形式肯定不是十进制 是以二进制形式存储
1----> 32bit(int)
3.4--> 64bit(double)

byte a = 1;
1--->32bit
00000000 00000000 00000000 00000001
a--->8bit
00000001
=赋值的时候做了一个自动的决定 自动类型转化

long d = 2147483648L;
-2147483648 2147483647是int类型的取值范围
如果创建的常量值超过以上范围
程序编译检测的时候会认为 数字太大
如果我们真的需要那么大的数字 必须在后面加L告知

练习1

需求:定义5个变量记录老师的信息并打印

代码示例:

public class VariableTest1{
    public static void main(String[] args){
        //1.定义字符串类型的变量记录老师的姓名
        String name = "黑马谢广坤";
        //2.定义整数类型的变量记录老师的年龄
        int age = 18;
        //3.定义字符类型的变量记录老师的性别
        char gender = '男';
        //4.定义小数类型的变量记录老师的身高
        double height = 180.1;
        //5.定义布尔类型的变量记录老师的婚姻状况
        boolean flag = true;

        //输出5个变量的值
        System.out.println(name);
        System.out.println(age);
        System.out.println(gender);
        System.out.println(height);
        System.out.println(flag);

    }
}

练习2

需求:将(电影名称,主演,年份,评分)四个信息选择不同类型的变量,随后打印出来。

代码示例:

public class VariableTest2{
    public static void main(String[] args){
        //1.定义字符串变量记录电影的名称
        String movie = "送初恋回家";
        //2.定义三个变量记录主演的名字
        String name1 = "刘鑫";
        String name2 = "张雨提";
        String name3 = "高媛";
        //3. 定义整数类型的变量记录年龄的年份
        int year = 2020;
        //4.定义小数类型的变量记录电影的评分
        double score = 9.0;

        //打印变量的信息
        System.out.println(movie);
        System.out.println(name1);
        System.out.println(name2);
        System.out.println(name3);
        System.out.println(year);
        System.out.println(score);

    }
}

练习3

需求:选择其中一部手机,将(手机价格,手机品牌)两个信息选择不同类型的变量,随后打印出来。

代码示例:

public class VariableTest3{
    public static void main(String[] args){
        //1.定义小数类型的变量记录手机的价格
        double price = 5299.0;

        //2.定义字符串类型的变量记录手机的品牌
        String brand = "华为";

        //输出变量记录的值
        System.out.println(price);
        System.out.println(brand);
    }
}

标识符

业内大多数程序员都在遵守阿里巴巴的命名规则。

在day02的资料文件夹中有。

硬性要求:

​ 必须要这么做,否则代码会报错。

  • 必须由数字、字母、下划线_、美元符号$组成。
  • 数字不能开头
  • 不能是关键字
  • 区分大小写的。

软件建议:

​ 如果不这么做,代码不会报错,但是会让代码显得比较low。

小驼峰命名法

适用于变量名和方法名

  • 如果是一个单词,那么全部小写,比如:name

  • 如果是多个单词,那么从第二个单词开始,首字母大写,比如:firstName、maxAge

大驼峰命名法

适用于类名

  • 如果是一个单词,那么首字母大写。比如:Demo、Test。

  • 如果是多个单词,那么每一个单词首字母都需要大写。比如:HelloWorld

不管起什么名字,都要做到见名知意。

阿里巴巴命名规范细节:

  1. 尽量不要用拼音。但是一些国际通用的拼音可视为英文单词。

    正确:alibaba、hangzhou、nanjing

    错误:jiage、dazhe

  2. 平时在给变量名、方法名、类名起名字的时候,不要使用下划线或美元符号。

    错误:_name

    正确:name

需要注意

IDEA

IDEA概述

​ IDEA全称IntelliJ IDEA,是用于Java语言开发的集成环境,它是业界公认的目前用于Java程序开发最好的工具。

集成环境:

​ 把代码编写,编译,执行,调试等多种功能综合到一起的开发工具。

IDEA的下载和安装

下载

​ 可以到官方网站自行下载,网址为:https://www.jetbrains.com/idea

​ 今天的资料中,对应的安装包也提高给大家了。

8安装

  • 到资料文件夹中,双击安装包。

  • 点击next,准备安装

  • 点击Browse修改安装路径。

    修改完毕点击next

  • 勾选64-bit launcher。表示在桌面新建一个64位的快捷方式。

    其他的不要勾选。

    点击next。

  • 点击Install,准备安装。

  • 等进度条读取完毕之后,会有最终界面提示。

    点击finish即可。

  • 第一次启动会询问,是否导入一些设置。

    选择第二个不导入,保持默认设置,再点击OK。

  • 选择背景主题

    左边是黑色背景。右边是白色背景。

    这个可以根据自己的喜好来选择。

    选择完毕点击右下角的next

  • 在本界面让我们购买idea。

    因为我们是学习阶段,所以可以使用免费使用30天。

    点击第一排第二个。Evaluate for free

  • 点击蓝色的Evaluate,就可以开始免费试用30天了。

  • 当看到这个界面,就表示idea已经成功安装完毕

    可以点击右上角关闭。

IDEA中层级结构介绍

结构分类

  • project(项目、工程)
  • module(模块)
  • package(包)
  • class(类)

结构介绍

​ 为了让大家更好的吸收,package这一层级,我们后面再学习,先学习最基础的project、module、class。

project(项目、工程)

​ 淘宝、京东、黑马程序员网站都属于一个个项目,IDEA中就是一个个的Project。

module(模块)

​ 在一个项目中,可以存放多个模块,不同的模块可以存放项目中不同的业务功能代码。在黑马程序员的官方网站中,至少包含了以下模块:

  • 论坛模块
  • 报名、咨询模块

为了更好的管理代码,我们会把代码分别放在两个模块中存放。

package(包)

​ 一个模块中又有很多的业务,以黑马程序员官方网站的论坛模块为例,至少包含了以下不同的业务。

  • 发帖
  • 评论

为了把这些业务区分的更加清楚,就会用包来管理这些不同的业务。

class(类)

​ 就是真正写代码的地方。

小结

  • 层级关系

    ​ project - module - package - class

  • 包含数量

    ​ project中可以创建多个module
    ​ module中可以创建多个package
    ​ package中可以创建多个class

    ​ 这些结构的划分,是为了方便管理类文件的。

IDEA中的第一个代码

操作步骤
  • 创建Project 项目
  • 创建Module 模块
  • 创建class 类
  • 在类中编写代码
  • 完成编译运行

键盘录入

概念

键盘录入的实际功能Java已经帮我们写好了,不需要我们自己再实现了,而Java写好的功能都放在了Scanner这个类中,所以,我们只要直接使用Scanner这个类就可以了。

使用步骤:

第一步:

​ 导包:其实就是表示先找到Scanner这个类在哪。

第二步:

​ 创建对象:其实就表示申明一下,我准备开始用Scanner这个类了。

第三步:

​ 接收数据:也是真正干活的代码。

代码示例:

//导包,其实就是先找到Scanner这个类在哪
import java.util.Scanner;//路径
public class ScannerDemo1{
    public static void main(String[] args){
        //2.创建对象,其实就是申明一下,我准备开始用Scanner这个类了。
        Scanner input = new Scanner(System.in);
        System.out.println("请输入一个数字");
        int number = input.nextInt();
         //input这个小人在计算机中的消息队列内等着读取
         //当程序运行之后,我们在键盘输入的数据就会被变量number给接收了
        System.out.println(number);
    }
}

System.in是告诉程序,用户要输入

键盘录入扩展

键盘录入涉及到的方法如下:

​ next()、nextLine()、nextInt()、nextFloat()、nextDouble()、nextByte()。

nextInt()

读取方式:nextInt()会以回车符作为截至 , 将回车符之前的所有字符都读出来 , 回车符会留在消息队列中

比如:键盘录入123,那么会先把123组合成字符串然后把字符串转化成123数字最后把123当做int类型的整数返回。

注意 :

  • 读取的时候如果发现键盘录入的不是整数 , 那么就会报错InputMismatchException
  • 读的时候如果发现有问题,那就不会把字符串转化为数字 , 也不会返回!

代码示例:

Scanner sc = new Scanner(System.in);
int s = sc.nextInt();//只能录入整数(负整数 , 0和正整数)
System.out.println(s);

nextDouble()

读取方式和nextInt()一致 ,就是能接收的数据有差别而已

注意 : 能接收整数和小数,但是都会看做小数返回 , 录入字母会报错。

代码示例:

Scanner sc = new Scanner(System.in);
double d = sc.nextDouble();//录入的整数,小数都会看做小数。
System.out.println(d);

next()

读取方式和nextInt()一致 ,就是能接收的数据有差别而已

注意 : nextInt()可以接受任意数据,但是都会返回一个字符串。

nextLine()

读取方式 : nextLine()会以回车符作为截至 , 将回车符连同之前的所有字符都读取出来

然后将回车符扔掉 ,通过new String(""); 把之前的所有字符组合成一个完整的字符串

可以接受任意数据,但是都会返回一个字符串。

nextInt读取输入完后会把光标放在这行的最后 nextLine把光标放到下一行

比如:键盘录入abc,那么会把abc看做字符串返回。

​ 键盘录入123,那么会把123看做字符串返回。

代码示例:

Scanner sc = new Scanner(System.in);
String s = sc.next();//录入的所有数据都会看做是字符串
System.out.println(s);

代码示例:

Scanner sc = new Scanner(System.in);
String s = sc.nextLine();//录入的所有数据都会看做是字符串
System.out.println(s);

第一个细节:

​ next()、nextInt()、nextFloat()、nextDouble()、nextByte()。

接收数据的时候,会遇到空格,回车,制表符其中一个就会停止接收数据。

nextLine()遇到回车才会停止接收数据

代码示例:

Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
System.out.println(i);
//键盘录入:1 2//注意录入的时候1和2之间加空格隔开。
//此时控制台打印1
//表示nextInt方法在接收数据的时候,遇到空格就停止了,后面的本次不接收。

第二个细节:

​ next() 例如输入123回车 456回车

第二个来读取的时候就会跳过第一次输入回车直接读取第二次输入的内容

接收数据的时候遇到回车/空格/制表符才会停止读取

int number1 = input.nextInt();//键盘录入123回车
int number2 = input.nextInt();//键盘录入456回车
System.out.println(number1);//123
System.out.println(number2);//456

next()、nextInt()、nextFloat()、nextDouble()、nextByte()。和以上读取方式一样的

代码示例:

第三个细节:

nextLine() 方法是把一整行全部接收完毕。

Scanner sc = new Scanner(System.in);
String s = sc.nextLine();//键盘录入a b(注意a和b之间用空格隔开)
System.out.println(s);//那么nextLine不会过滤前面和后面的空格,会把这一整行数据全部接收完毕。

混用引起的后果

上面说的两套键盘录入不能混用,如果混用会有严重的后果。

代码示例:

Scanner input = new Scanner(System.in);
//键盘录入123456回车
System.out.println("请输入密码");
int password = input.nextInt();
System.out.println("请输入账号");
String name = input.nextLine();
//比较
System.out.println("接收到了账号:" + name);//只读到了回车
System.out.println("接收到了密码:" + password);//123456

以上代码已经表明如果混用会导致nextline()也就是第二次用户不能输入

导致程序的结束 , 进而导致Bug...

也就是说nextline()会吞回车......

解决方案1

利用nextLine()方法读取一个空回车符

Scanner input = new Scanner(System.in);
//键盘录入123456回车
System.out.println("请输入密码");
int password = input.nextInt();
input.nextLine();
System.out.println("请输入账号");
String name = input.nextLine();

//比较
System.out.println("接收到了账号:" + name);//只读到了回车
System.out.println("接收到了密码:" + password);//123456

缺点是:多了一行代码 → input.nextLine();

解决方案2

利用next()方法读取字符串 next方法读取方式与nextInt一样,不读取回车符

Scanner input = new Scanner(System.in);
//键盘录入123456回车
System.out.println("请输入密码");
int password = input.nextInt();
System.out.println("请输入账号");
String name = input.next();
//比较
System.out.println("接收到了账号:" + name);//只读到了回车
System.out.println("接收到了密码:" + password);//123456

缺点是:消息队列里面还留有两个回车符......

解决方案3

都采用nextLine()方法去读取 , 这样消息队列里面就没有回车符了

Scanner input = new Scanner(System.in);
//键盘录入回车123456回车
System.out.println("请输入密码");
String password = input.nextLine();
//键盘录入回车王志鹏回车
System.out.println("请输入账号");
String name = input.nextLine();
//比较
System.out.println("接收到了账号:" + name);//123456
System.out.println("接收到了密码:" + password);//王志鹏

缺点是:只能返回String类型的.....

解决方案4

用包装类解决如上问题

基本<--包装类-->引用 int---Integer char---Character

剩下的基本类型包装类都是首字母变大写 如byte---Byte long---Long float---Float

Scanner input = new Scanner(System.in);
//键盘录入回车123456回车
System.out.println("请输入密码");
String password = input.nextLine();
int newPassword = Integer.parseInt(password);
//键盘录入回车王志鹏回车
System.out.println("请输入账号");
String name = input.nextLine();
//比较
System.out.println("接收到了账号:" + name);//123456
System.out.println("接收到了密码:" + newPassword);//王志鹏

如果输入的密码是英文字母呢?

Scanner input = new Scanner(System.in);
//键盘录入回车abc回车
System.out.println("请输入密码");
int newPassword = Integer.parseInt(input.nextLine());
System.out.println("请输入账号");
String name = input.nextLine();
System.out.println("接收到了账号:" + name);
System.out.println("接收到了密码:" + newPassword);

如果输入的密码是英文字母他是不会转化为数字的,因为不是char类型

NumberFormatException数字格式化异常 , 将字符串转化成数字 , 发现字符串存的不是数字

简便的写法

Scanner input = new Scanner(System.in);
//键盘录入回车123456回车
System.out.println("请输入密码");
int newPassword = Integer.parseInt(input.nextLine());
//键盘录入回车王志鹏回车
System.out.println("请输入账号");
String name = input.nextLine();
//比较
System.out.println("接收到了账号:" + name);//123456
System.out.println("接收到了密码:" + newPassword);//王志鹏

那如果想把int类型再次转化为String类型呢?

最简单的方法就是int类型的变量+"" 这样就把int类型的数据变成了String类型的数据

int newPassword = Integer.parseInt(input.nextLine());
System.out.println(newPassword + "");

如何使用?

键盘录入分为两套:

  • next()、nextInt()、nextDouble()这三个配套使用。

如果用了这三个其中一个,就不要用nextLine()。

  • nextLine()单独使用。

如果想要整数,那么先接收,再使用Integer.parseInt进行类型转换。

代码示例:

Scanner sc = new Scanner(System.in);
String s = sc.next();//键盘录入123
System.out.println("此时为字符串" + s);//此时123是字符串
int i = sc.nextInt();//键盘录入123
System.out.println("此时为整数:" + i);
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();//键盘录入123
System.out.println("此时为字符串" + s);//此时123是字符串
int i = Integer.parseInt(s);//想要整数再进行转换
System.out.println("此时为整数:" + i);
文末附加内容

评论

  1. 毛毛!
    Windows Chrome
    11 月前
    2024-7-03 23:19:17

    挺不错的😂

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇