【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 ...
随机推荐
- distroless 镜像介绍及 基于cbl-mariner的.NET distroless 镜像的容器
1.概述 容器改变了我们看待技术基础设施的方式.这是我们运行应用程序方式的一次巨大飞跃.容器编排和云服务一起为我们提供了一种近乎无限规模的无缝扩展能力. 根据定义,容器应该包含 应用程序 及其 运行时 ...
- Go写文件的权限 WriteFile(filename, data, 0644)?
本文来自博客园,作者:阿伟的博客,转载请注明原文链接:https://www.cnblogs.com/cenjw/p/go-ioutil-writefile-perm.html 前言 go iouit ...
- Java方法读取文件内容
一.针对文件内容的读取,在平时的工作中想必是避免不了的操作,现在我将自己如何用java方法读取文件中内容总结如下:废话不多说,直接上代码: 1 public static void main(Stri ...
- nextInt和nextLine以及next方法的区别
1.nextInt() 只读取整型的数据,输入读取完之后,光标仍在当前行. 2.nextLine() 扫描到一行内容,当遇见换行符时,结束扫描.一旦输入读取完毕,该方法会将光标移到下一行开始的位置. ...
- C语言动态输出等腰三角形
C语言动态输出等腰三角形 题目要求:输入行数 打印出对应行数的等腰三角形,要求使用for循环嵌套. 思路 while语句写外层死循环 用于判断输出的数据: 分析: 最外层for,来控制最外层行数,存储 ...
- Windows版pytorch,torch简明安装
好消息!!目前pytorch已经提供windows官方支持,可以直接安装了,请移步这里. pytorch是facebook开发的深度学习库,其目标是想成为深度学习领域整合gpu加速的numpy.笔者研 ...
- Identity Server 4资源拥有者密码认证控制访问API
基于上一篇文章中的代码进行继续延伸,只需要小小的改动即可,不明白的地方可以先看看本人上一篇文章及源码: Identity Server 4客户端认证控制访问API 一.QuickStartIdenti ...
- k8s+crio+podman搭建集群
前言 在传统的k8s集群中,我们都是使用docker engine做为底层的容器管理软件的,而docker engine因为不是k8s亲生的解决方案,所以实际使用中会有更多的分层.之前我们也讲过,k8 ...
- 聊聊 C++ 中的几种智能指针 (上)
一:背景 我们知道 C++ 是手工管理内存的分配和释放,对应的操作符就是 new/delete 和 new[] / delete[], 这给了程序员极大的自由度也给了我们极高的门槛,弄不好就得内存泄露 ...
- TCP通信的客户端代码实现和TCP通信的服务器代码实现
TCP通信的客户端代码实现 package com.yang.Test.ServerStudy; import java.io.*; import java.net.Socket; /** * TCP ...