Java的字符串运算符和输入输出
软件或者系统的关系如下图。
如果喜欢漂亮的界面、图形化的内容,学习Web前端或者移动端。如果喜欢复杂的逻辑,和数据库、服务器等打交道,就学后端。
或者其他方向,算法、运维、DBA等都可以。选一个方向努力,别走了弯路。
到这里还继续的话,默认你选后端,Java了。
开始了,本篇已经默认你的Java之路已达成两个成就
java --version
。如果还没,那就先看一下这几篇:
本篇的运行环境:
我们直接使用IDEA社区版编写程序,以及运行调试。对于没有编程技术的用户来讲,能成功安装配置好Java的环境变量,已经很不容易了。如果还用txt
等文本编辑器写代码,用javac
编译java
运行,更为不容易。反复试验,找资料学习,反复失败,可能会打击兴趣,从而对编程产生抵触甚至恐惧的心理。
写这个Java极简入门教程,是为了快速掌握一些Java的编程知识,快速入手,少走弯路,尽快感受到编程的乐趣。
至于那些原理、编程思想等知识,放在后面一点的位置学习。那时候你已经不是个菜鸟了,再通过经典的Java书籍学习一遍,会更加轻松愉快。
**Java体系很大,有很多重要的知识。**但是,那都是后面要解决的。
这个教程的目标:教会用SpringBoot写一个简单Java服务,实现和数据库交互。(Java程序员的职业生涯,才要正式开始)
我们先从新手村的小野怪开启我们的升级之路。
数据类型包含基本数据类型和引用数据类型。上一篇已经讲过基本数据类型了,Java极简入门教程——3.基本数据类型和变量_编程还未的博客-CSDN博客。
简单讲一下引用数据类型。引用数据类型,就是对象。先跳过对象。
Java里面最常见的引用类型或者对象就是String。
String又叫字符串,在 Java 编程中广泛使用的字符串是一系列字符。
Java没有内置的字符串类型, 而是在标准 Java 类库中提供了 一个预定义类,类叫String。每个用双引号括起来的字符串都是String类的一个实例(实例和对象是一个意思)。
举个栗子:
/**
* 字符串
*
* @author 编程还未
*/
public class Learn4 {
public static void main(String[] args) {
String a = "编程还未";
String b = "";
}
}
上面的变量a
和b
就是两个字符串的引用。字符串还有个特点就是,可以用+
拼接,生成一个新的字符串。凡是和字符串用+
拼接的,都会得到一个新字符串。
举个栗子:
String a = "编程还未";
String c = "你好,我是" + a;
System.out.println("变量c:" + c);
结果如下:
字符串a:编程还未
变量c:你好,我是编程还未
其实,我们使用的打印方法System.out.println()
也经常用到拼接。
String是一个类,所以包含了很多方法(后面会讲类和方法)。简单讲解几个方法
从字符串中提取一个字串。
/**
* 字符串
*
* @author 编程还未
*/
public class Learn4 {
public static void main(String[] args) {
String a = "编程还未";
String b = "";
//在字符串a上,提取一个字串
String aSubString = a.substring(0, 1);
System.out.println("字符串a:" + a);
System.out.println("字符串aSubString:" + aSubString);
}
}
运行结果如下:
字符串a:编程还未
字符串aSubString:编
这两句代码单独拿出来讲一下
String a = "编程还未";
//在字符串a上,提取一个字串
String aSubString = a.substring(0, 1);
定义了一个变量a,是String类型(因为String是引用类型,所以编程还未
这个值,是String对象,a呢也叫对象的引用),值是“编程还未”。
定义了一个变量aSubString,是String类型,值是a.subString(0,1)
。a.subString(0,1)的意思的在变量a的下标[0,1)的位置复制出一个新字符串。String a="编程还未";
,长度是4,对应的下标为0-编,1-程,2-还,3-未。计算机,下标从0开始。
subString只是String类中众多方法之一,那么从哪里可以学到这些方法呢?
Java API,也就是Java的文档,里面记录了Java标准包的文档。
官方文档Overview (Java SE 11 & JDK 11 ) (oracle.com),这是英文的文档,官方没提供中文翻译版本。但是有社区/个人维护的中文版本,Overview - Java 11中文版 - API参考文档 (apiref.com)。
以官网的文档为例,简单讲一下如何使用。(中文版的使用方法没查别)
在右上角的SEARCH
框输入String
,选第一个java.lang.String
,前面的java.lang
是String
类所在的包。点java.lang.String
就会进到String里的详细文档。文档上面是对String类的讲解,下面的String类里面的属性,继续往下Method Summary
,中文叫方法摘要
,就是了。
Modifier and Type(变量和类型),Method(方法名),Description(描述)
这些文档其实就是用文档化注释写的,然后用Java自带的工具生成的。
运算符就是用来运算的。Java的运算符分几种
这是我们最常见的运算符=
,它将右侧的值赋值给左侧
int a = 0;
int b = 1;
+ - * /
,加减乘除,以及取余数%
。跟数学上的符号用法基本一致,需要注意的是,+
也可以用来连接字符串。
/**
* 算数运算符
*
* @author 编程还未
*/
public class Learn5 {
public static void main(String[] args) {
int a = 1;
int b = 2;
//a + b 赋值给 sum
int sum = a + b;
System.out.println("sum:" + sum);
int c = 3;
int d = 2;
int result1 = d - c;
System.out.println("2-3=" + result1);
int e = 10;
int f = 3;
int result2 = e / f;
System.out.println("10/3=" + result2);
//* 乘法不写了,自己试一下
//写过取余
int g = 10;
int h = 3;
int result3 = g % h;
System.out.println("10%3=" + result3);
}
}
运行结果如下:
sum:3
2-3=-1
10/3=3
10%3=1
一元运算符只需要一个操作数;它们执行各种操作,例如将值递增/递减1、对表达式求反或反转布尔值。
运算符 | 描述 |
---|---|
+ | 一元加运算符;表示正值(如果没有此值,数字为正数) |
- | 一元减运算符;否定,用在数字前就是负数 |
++ | 增量运算符;将值递增 1 |
– | 递减运算符;将值递减 1 |
! | 逻辑补码运算符;反转布尔值 |
举个栗子
/**
* 一元运算符
*
* @author 编程还未
*/
public class Learn6 {
public static void main(String[] args) {
int number1 = +1;
System.out.println(number1);
number1--;
System.out.println(number1);
number1++;
System.out.println(number1);
number1 = -number1;
System.out.println(number1);
boolean success = false;
System.out.println(success);
System.out.println(!success);
}
}
相等运算符和关系运算符确定一个操作数是否大于、小于、等于或不等于另一个操作数。这些运算符中的大多数可能看起来也很熟悉。需要注意的是,比较两个值是否相等不能用=
,需要用==
。
运算符 | 描述 |
---|---|
== | 等于 |
!= | 不等于 |
> | 大于 |
>= | 大于等于 |
< | 小于 |
<= | 小于等于 |
这里demo先不写了,跟后面要讲到的if条件语句
结合比较容易理解。
逻辑运算符,对两个布尔表达式进行运算。
运算符 | 描述 |
---|---|
&& | 逻辑与。当两个操作数都为真,结果为真。 |
|| | 逻辑或。如果任何两个操作数任何一个为真,结果为真。 |
! | 逻辑非。得到相反的结果。 |
这里demo先不写了,跟后面要讲到的if条件语句
结合比较容易理解。
Java提供这里对整数类型提供位运算和移位运算的运算符。
操作符 | 描述 |
---|---|
& | 按位与 |
| | 按位或 |
^ | 按位异或 |
~ | 按位非 |
<< | 左移 |
>> | 有符号右移 |
>>> | 无符号右移 |
这里需要补充二进制的知识,源码、补码和反码的知识。先跳过,后期感觉自己可以的时候,看书补充知识。
instanceof
运算符将对象与指定类型进行比较。使用它来测试对象是类的实例、子类的实例还是实现特定接口的类的实例。
这个后面讲到类和对象的时候,再讲。
为了增加后面内容的趣味性,让程序和程序员产生交互,需要可以从键盘输入,并将结果输出。软件交互的方式有很多,可以键盘、触屏手势、甚至可穿戴设备输入,输出的话也是各式各样,非常酷炫,文字、图像、动画等等。
但是我们目前只能选择键盘输入和简单的文字输出。
这里的输出,其实的把内容打印到标准输出流,也就是控制台窗口。我们已经用过了,就是System.out.println();
System.out.println();
可以输入那八中基本类型,也可以输出String字符串。
/**
* 输出
*
* @author 编程还未
*/
public class Learn7 {
public static void main(String[] args) {
System.out.println(1);
System.out.println(1.1f);
System.out.println(1000L);
System.out.println("你好,我是编程还未");
int age = 18;
System.out.println(age);
//+连接字符串,结果是字符串,这里输出的是字符串
System.out.println("年龄是:" + age + "岁");
}
}
输出用标准输出流,那输入就用标准输入流,System.in
。
这都是固定的代码,记住即可。
import java.util.Scanner;
/**
* 输入
*
* @author 编程还未
*/
public class Learn8 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
//键盘输入的值
String valueFromKeyboard = scanner.next();
System.out.println("键盘输入的值:" + valueFromKeyboard);
}
}
运行代码后,在控制台直接输入你好
,按回车
Scanner还有一些其他方法,比如:nextInt
、nextLine
、hasNext
等,IDEA是有提示的,比如输入:scanner. 。这个 . 按完,就有提示了。
这些方法的具体作用,可以通过Java API文档查看学习。
我们讲解一些hasNext
、nextInt
、nextLine
。
这个方法可以一直输入值,程序不会自动结束。别输入空格,输入完成后按回车,可以重复输入按回车。
import java.util.Scanner;
/**
* 输入
*
* @author 编程还未
*/
public class Learn9 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()) {
//键盘输入的值
String valueFromKeyboard = scanner.next();
System.out.println("键盘输入的值:" + valueFromKeyboard);
}
}
}
结果
1
键盘输入的值:1
2
键盘输入的值:2
12
键盘输入的值:12
和next
类似,但是可以输入空格,不能只输入空格。
import java.util.Scanner;
/**
* 输入
*
* @author 编程还未
*/
public class Learn10 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
//键盘输入的值
String valueFromKeyboard = scanner.nextLine();
System.out.println("键盘输入的值:" + valueFromKeyboard);
}
}
获取输入的数字类型。next
和nextLine
输入的都是字符串。
import java.util.Scanner;
/**
* 输入
*
* @author 编程还未
*/
public class Learn11 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
//键盘输入的值
String valueFromKeyboard = scanner.next();
System.out.println("键盘输入的值:" + valueFromKeyboard);
}
}
基本数据类型和字符串,运算符,以及输入输出学完了。我们做一个趣味小程序。
按提示输入自己的信息并打印。
直接放代码,运行后输入一项后,按回车,再输入下一项。
import java.util.Scanner;
/**
* 趣味小程序,你的信息。
*
* @author 编程还未
*/
public class Learn12 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("你好");
System.out.println("请输入昵称");
String nickName = scanner.next();
System.out.println("请输入网龄,单位是年,只需要输入整数即可");
int age = scanner.nextInt();
// \n 是换行的意思
System.out.println("你的信息是如下\n昵称:" + nickName + "\n网龄:" + age + "年");
}
}
自由发挥吧,可以试着写一个复杂一些的趣味程序。