【java】学习路线2-构造、Scanner包导入、字符串操作、数组、引用类型
请先查看前置知识:
【JAVA】基础1-字符串、堆、栈、静态与引用类型
https://www.cnblogs.com/remyuu/p/15990274.html
import java.util.Scanner;
//notepad++ 的快速注释 ctrl + k 取消时ctrl + q
/*
代码学习知识点清单
1-Scanner的使用
2-String的两种创建方法
3-使用Scanner规则搜索关键字
4-字符串-获取长度
5-字符串-获取特定关键字索引
6-字符串-根据索引获取关键字
7-字符串-截取
8-字符串-查询关键字
9-字符串-构造方法与直接赋值的原理
10-字符串-比较字符串大小
11-字符串-判断是否为空字符串
12-字符串-分割文本!
13-字符串-大小写,空格处理
*/
public class Learn01{
public static void main(String[] args){
System.out.println("-------------------------------");
System.out.println("------------Learn01-----------");
System.out.println("-------------------------------");
// Scanner s = new Scanner(System.in);
// int num1 = s.nextInt();
// System.out.println("请用户再输入一个");
// int num2 = s.nextInt();
// System.out.println("sum="+(num1+num2));
//s.close();//将构造方法关闭
// //也可以用nextFloat,nextDouble
//字符串变量创建两种方法
String str1 = "我是一个string1";//一般方法
String str2 = new String("我是第二个"); //构造方法
System.out.println(str1 + str2);
//String使用Scanner方法进行过滤
String input = "1 fish 2 fish red fish blue fish";
Scanner ss = new Scanner(input).useDelimiter("\\s*fish\\s*");
//Scanner方法给对象构造方法(new)的时候,方法需要传入数据源,
//即Scanner( ... ),可以再添加筛选器,分割文本!
//筛选的格式 \\s*...\\s*
System.out.println(ss.nextInt());
System.out.println(ss.nextInt());
System.out.println(ss.next());
System.out.println(ss.next());
ss.close();
//练习使用Scanner筛选器分割文本
String TestScannerString = "1 2 3 4 3 1 2 3 3 4 3 2";
Scanner MyScanner = new Scanner(TestScannerString).useDelimiter("\\s* \\s*");
for (int i=0;i<2;i++)
System.out.println(i + ":" +MyScanner.next());
/*关于字符串的知识点
字符串不能够被修改,string与其他基本类型不同(比如int等),
string在变量区储存的是字符串在常量区的地址,重新赋值的话
只会改变其的指向的内存地址*/
//字符串的操作 "1 2 3 4 3 1 2 3 3 4 3 2"
///1,length(),取得字符串的长度
System.out.println("上面字符串长度"+TestScannerString.length());
System.out.println("-------------------------------");
///2-indexOf(..)根据字符查找位置
//2-1indexOf(String str),查找字符串子串从前往后 注:索引从0开始哦
System.out.println(TestScannerString.indexOf("4"));//输出6
//2-2,lastIndexOf(String str),从后往前查找子串
System.out.println(TestScannerString.lastIndexOf("4"));//输出18
//如果查找不到 返回-1
//2-3,indexOf(int i),还可以传入ASCII/字符
System.out.println(TestScannerString.lastIndexOf(49));//49是1 输出10
//2-4,lastIndexOf(int i)同理,不赘述。
System.out.println("-------------------------------");
///3-charAt(int index)根据位置获取字符
System.out.println(TestScannerString.charAt(0));
//索引不能超出范围,最大索引是长度-1
System.out.println("-------------------------------");
///4-substring(...)截取字串
//4-1,substring(int beginIndex),从指定位置(包括)往后截取
System.out.println(TestScannerString.substring(3));
//4-2,substring(int beginIndex,int endIndex),从指定位置(包括)截取到指定位置(不包括)
System.out.println(TestScannerString.substring(3,6));//强调,不包括结束索引
System.out.println("-------------------------------");
String strTest = new String("www.pornhub.com");//方法构造,会new在堆中,再引用字符常量
String strTestDirect = "www.pornhub.com";//在栈中直接引用字符常量的地址,没有中间商
///5-判断字符串
//5-1,startsWith(String str)判断字符串是否以...开头
System.out.println(strTest.startsWith("www.")); //输出true
//5-2,endsWith(String str)判断字符串是否以...结尾
System.out.println(strTest.endsWith("www.")); //输出false
//5-3,equals(String str)判断字符串是否相等
System.out.println(strTest.equals("www.pornhub.com")); //输出true
//5-4, == 比较字符串的引用地址
System.out.println(strTest == "www.pornhub.com"); //输出false
System.out.println(strTestDirect == "www.pornhub.com"); //输出true
/*字符串构造方法的本质 !!重点!!
构造方法和直接赋值在内存的存储方式不一样
内存有四个区:栈 堆 方法区 运行常量区
//字符串("www.pornhub.com")会存储在方法区的运行常量区
//以下直接赋值的方式现在栈中创建str1变量,存储一个地址,指向常量区
//str1和str2都是指向同一个地址
String str1 = "www.pornhub.com";
String str2 = "www.pornhub.com";
String tr3 = new String("www.pornhub.com");
//但是需要注意的是,通过new出来的对象是存储在堆里面的,而不是常量区当中
//换而言之,方法中的"www.pornhub.com"会在运行常量区复制到堆中的那个新的对象中
//总的来说,栈中的变量指向堆,堆中的对象再指向运行常量区,相当于中间商
//另外一点,如果初始化对象赋值为null,则只能索引对象(栈),不能索引对象在堆中的引用。
然后需要区别 == 和 equals
==是比较引用 equal比较的是字符不管你怎么引用
*/
//5-5,equalsIgnoreCase(String str),忽略大小写地判断字符串是否相等
System.out.println(strTest.equalsIgnoreCase("wWw.PoRnHuB.CoM"));//输出true
//5-6,compareTo(String str),比较字符串大小
//挨个字符比较,遇到不同的字符就返回ascii差值,
//若前面字符相等长度不等则返回长度差 ascii的计算:主体-客体
//作用:一般用于字母的排序中
System.out.println(strTest.compareTo("www.pornhub.com"));//输出0
System.out.println(strTest.compareTo("www.pornhub")); //输出4
System.out.println(strTest.compareTo("xww.pornhub.com"));//输出-1
//5-7,contains(String str),判断是否包含字串...,不管有多少个
System.out.println(strTest.contains("www.")); //输出true
//5-8,isEmpty(),判断是否为空字符串
System.out.println(strTest.isEmpty()); //输出false
String testStringEmpty = "";
System.out.println(testStringEmpty.isEmpty()); //输出true
testStringEmpty = " ";
System.out.println(testStringEmpty.isEmpty()); //输出false
//如果是赋值null,是不可以操作的。
System.out.println("-------------------------------");
///6-字符串转换操作
//6-1,toLowerCase(),转小写
System.out.println(strTest.toLowerCase());
//6-2,toUpperCase(),转大写
System.out.println(strTest.toUpperCase());
//6-3,split(...),字符串分割,用字符串数组来接收
//6-3-1,split(String str)
String[] strs = strTest.split("\\.");//非常特殊!!!
System.out.println(strs); //输出了地址
for(String temps : strs)
System.out.println(temps);
//6-3-2,split(String str,int limit)
//6-4,trim(),剔除前后的空格,中间不剔除
strTest = " www.pornhub.com ";
System.out.println(strTest = strTest.trim()); //输出了www.pornhub.com
//6-5,replace(,),可以替换字符或文本(只能字符替换字符,文本替换文本,包括空字符)
System.out.println(strTest = strTest.replace("www","i love"));//输出了i love.pornhub.com
System.out.println(strTest = strTest.replace('i','u')); //输出了u love.pornhub.com
}
}
【java】学习路线2-构造、Scanner包导入、字符串操作、数组、引用类型的更多相关文章
- 最新java学习路线:含阶段性java视频教程完整版
最新java学习路线:带阶段性java视频教程版本 第一阶段:Java基础 学习目标: 掌握基本语法.面向对象.常用类.正则.集合.Io流.多线程.Nio.网络编程.JDK新特性.函数式编程 知识点细 ...
- 一份最中肯的Java学习路线+资源分享(拒绝傻逼式分享)
这是一篇针对Java初学者,或者说在Java学习路线上出了一些问题(不知道该学什么.不知道整体的学习路线是什么样的) 第一步:Java基础(一个月左右) 推荐视频: 下面的是黑马内部视频,我比较推荐的 ...
- 【Todo】Java学习路线(方向指导)
在网上搜了下Java学习路线(关键词:学习,因为众所周知,实践出牛人,在平时工作不怎么深入的情况下,才强调学习的方向的重要性 ^_^) 发现下面知乎这个回答写的真好.mark如下: https://w ...
- 【强烈推荐】可能是最适合你的 Java 学习路线和方法
如遇链接无法打开,建议使用 https://github.com/Snailclimb/JavaGuide/blob/master/docs/questions/java-learning-path- ...
- Java学习路线【转】
Java学习路线[转] 第一阶段:JavaSE(Java基础部分) Java开发前奏 计算机基本原理,Java语言发展简史以及开发环境的搭建,体验Java程序的开发,环境变量的设置,程序的执行过程,相 ...
- 分享篇——我的Java学习路线
虽然之前我是开发出身,但是我学习的语言是Objective-c,这个语言使用起来范围比较窄,对于自动化学习来说也是无用武之地,所以我自己学习了Java,对于一个有开发经验的人来说学习一门新语言相对来说 ...
- java学习路线(好资源大家分享)
对于入门java将近两年的时间,曾经迷惘过,一直想知道java的具体学习路线,看过了许许多多的java经验分享的帖子,评论,以及其他各种培训机构所谓的学习路线,发现没有一个符合我个人需求的学习路线,根 ...
- java学习路线推荐,希望能帮到你
很多小白刚开始学习java时,肯定迷惘过,因为对java基本是啥也不懂的,一直想知道java的具体学习路线,我曾经也看了许许多多的java经验分享的帖子,评论,以及其他各种培训机构所谓的学习路线,特别 ...
- Java学习路线|转至CodeSheep
Java学习路线 基础知识 . 基本语法 基本网络知识:tcp/ip http/https 工具方面 . 操作系统:linux (CentOS\Ubuntu\Fe..) 代码管理:svn/git 持续 ...
- 从入门到精通,Java学习路线导航
引言最近也有很多人来向我"请教",他们大都是一些刚入门的新手,还不了解这个行业,也不知道从何学起,开始的时候非常迷茫,实在是每天回复很多人也很麻烦,所以在这里统一作个回复吧. Ja ...
随机推荐
- npm切换到国内华为云的镜像
npm下载包很慢?不能忍,切换到国内华为云的镜像吧. npm config set registry https://repo.huaweicloud.com/repository/npm/ npm ...
- BUUCTF-爱因斯坦
爱因斯坦 16进制打开可以看到存在压缩包,使用binwalk分离出来 提示需要解压密码,按照常理爆破四位数纯数字没有出来,查看图片属性发现密码 得到flag
- js 表面学习 - 认识函数
JavaScript 函数语法 JavaScript 函数通过 function 关键词进行定义,其后是函数名和括号 (). 函数名可包含字母.数字.下划线和美元符号(规则与变量名相同). 圆括号可包 ...
- 安装gitlab客户端
1. 下载客户端软件包 https://pan.baidu.com/disk/home#/category?type=6&vmode=list 安装顺序: Git-2.13.3-64-bit. ...
- appium简单使用
App 测试通常会用到的工具 adb :Android 的控制工具,用于获取Android的各种数据和控制 Appium Desktop:内嵌了Appium Server和Inspector的综合工具 ...
- putchar与getchar
#include <stdio.h>#include <stdlib.h>void myputs(char*p) //此处的*号是标志,标志这P是一个指针{ if(p==NUL ...
- 全面吃透JAVA Stream流操作,让代码更加的优雅
全面吃透JAVA Stream流操作,让代码更加的优雅 在JAVA中,涉及到对数组.Collection等集合类中的元素进行操作的时候,通常会通过循环的方式进行逐个处理,或者使用Stream的方式进行 ...
- 编译安装Python出现“pip is configured with locations that require TLS/SSL, however the ssl.....”
ubuntu: sudo apt-get install libssl-dev Cenos: sudo yum install openssl-devel 重新编译: ./configure --en ...
- JsonPath:针对json的强大的规则解析与参数查找工具
项目特点 GitHub项目地址:https://github.com/json-path/JsonPath 主要功能: 将Json字符串转为Java Map对象(这个不算什么,FastJson之类的工 ...
- NAT模式 LVS负载均衡群集部署
NAT模式 LVS负载均衡群集部署的操作步骤 实验环境准备: 负载调度器:内网关 ens33:172.16.10.1,外网关 ens37:12.0.0.1 Web节点服务器1:172.16.10.10 ...