字符串的特点

  1. 字符串的内容永不可变
  2. 正是因为字符串不可改变,所以字符串是可以共享使用的
  3. 字符串效果上相当于是char[]字符数组,但是底层原理是byte[]字节数组

创建字符串的常见3+1种方式
三种构造方法:
public String():创建一个空白字符串,不含有任何内容
public String(char[] array):根据字符数组的内容,来创建对应的字符串
public String(byte[] array):根据字节数组的内容,来创建对应的字符串

一种直接创建
String str = “Hello”;//右边直接用双引号

public class Demo{public static void main(String[] args){//使用空参构造String str1 = new String();System.out.println(“第1个字符串:” + str1);//根据字符数组创建字符串char[] charArray = {‘A’,’B’,’C’};String str2 = new String(charArray);System.out.println(“第2个字符串:”+str2);//根据字节数组创建字符串byte[] byteArray = {97,98,99};String str3 = new String(byteArray);//直接创建String str4 = “Hello”;System.out.println(“第4个字符串:” + str4);}
}

字符串的比较相关方法

public static void main(String[] args){String str1 = “Hello”;String str2 = “Hello”;char[] charArray = {‘H’,’e’,’l’,’l’,’e’};String str3 = new String(charArray);System.out.println(str1.equals(str2));System.out.println(str2.equals(str3));System.out.println(str3.equals(“Hello”));System.out.println(“str2”.equals(str1));String str4 = “hello”;System.out.println(str1.equals(str4));//falseString str5 = null;System.out.println(“abc”.equals(str5));//推荐,falseSystem.out.println(str5.equals(“abc”));//不推荐,报错,空指针异常NullPointerExceptionString strA = “Java”;String strB = “java”;System.out.println(strA.equals(strB));//false,严格区分大小写System.out.println(strA.equalsIgnoreCase(strB));//true,忽略大小写 }

==是进行对象的地址值比较,如果确实需要字符串内容的比较,可以使用两个方法

public boolean equals(Object obj):
参数可以是任何对象,只有参数是一个字符串并且内容相同的才会给true
否则返回false
注意事项:

  1. 任何对象都能用Object进行接收
  2. equals方法具有对称性,a.equals(b)和b.equals(a)效果一样
  3. 如果比较双方一个变量一个常量,推荐把常量字符串写在前面
    推荐:“abc”.equals(str) 不推荐: str.equals(“abc”)

public boolean equalsIgnoreCase(String str):忽略大小写,进行内容比较

字符串的获取相关方法
public int length(); 获取字符串当中含有的字符串个数,拿到字符串的长度
public String concat(String str):
将当前字符串和参数字符串拼接成为返回值新的字符串
public char charAt(int index):
获取指定索引位置的单个字符。(从索引0开始)
public int indexOf(String str):
查找参数字符串在本字符串当中首次出现的索引位置,如没有,返回值为-1

public class Demo{//获取字符串长度int length = “adjghaurhuashf”.length();System.out.println(“字符串的长度是:”+length);//拼接字符串String str1 = “Hello”;String str2 = “World”;String str3 = str1.concat(str2);System.out.println(str3);//HelloWorld,新的字符串//获取指定索引位置的单个字符char ch = “Hello”.charAt(1);System.out.println(“在1号索引位置的字符是” + ch);//查找参数字符串在本来字符串当中出现的第一次索引位置String original = “HelloWorld”;int index = original.indexOf(“ll0”);System.out.println(“第一次索引值是:” + index);//2System.out.println(“HelloWorld”.indexOf(“abc”));//-1
}

字符串的截取方法

public String substring(int index);
截取从参数位置一直到字符串末尾,返回新字符串

public String substring(int begin,int end);
截取从begin开始,一直到end结束中间的字符串
备注:[begin,end),包含左边,不包含右边

public class Demo{public static void main(String[] args){String str1 = “HelloWorld”;Strint str2 = str1.substring(5);String str3 = str1.substring(4,7);System.out.println(str2);//worldSystem.out.println(str3);//oWo}
}

字符串的转换相关方法

String当中与转换相关的常用方法:

public char[] toCharArray();
将当前字符串拆分成为字符数组作为返回值

public byte[] getBytes();
获得当前字符串底层的字节数组

public String replace(CharSequence oldString,CharSequence newString);
将所有出现的老字符串替换成为新的字符串,返回替换之后的结果新字符串。

public static void main(String[] args){//转换成为字符数组char[] chars = “Hello”.toCharArray();System.out.println(chars[0]);//HSystem.out.println(chars.length);//5//转换为字节数组byte[] bytes = “abc”.getBytes();for(int i = 0; i < bytes.length; i++){System.out.println(bytes[i]);}String str1 = “How do you do?”;String str2 = str1.replace(target:”o”,replacement:”*”);System.out.println(str1);//How do you do?System.out.println(str2);//H*w d* y*u d*?

字符串的分割方法
public String[] split(String regex)
按照参数规则,将字符串切分成为若干部分
注意事项:
split方法的参数其实是一个“正则表达式”
如果按照英文句点“.”进行切分,必须写“\.”

public class Demo{public static void main(String[] args){String str1 = “aaa,bbb,ccc”;String[] array1 = str1.split(reqex:”,”);for(int i = 0;i < array1.length;i++){System.out.println(array1[i]);}}
}

public class Student{private String name;private int age;static String room;public Student(){}public Student(String name,int age){this.name = name;this.age = age;}public String getName(){return name;}
}

如果一个成员变量使用了static关键字,那么这个变量不再属于对象自己,而是属于所在的类。多个对象共享同一份数据。

public class Student{private int id;private String name;private int age;static String room;private static int idCounter = 0;//学号计数器,每当new了一个新对象的时候,计数器++public Student(){idCounter++;}public Student(String name,int age){this.name = name;this.age = age;this.id = ++idCounter;}
}

一旦使用static修饰成员方法,那么这就成为了静态方法。静态方法不属于对象,而是属于类。

如果没有static关键字,那么必须首先创建对象,然后通过对象才能使用它。
如果有了static关键字,那么不需要创建对象,直接就能通过类名称来使用它

无论是成员变量,还是成员方法,那么必须首先创建对象,然后通过对象才能使用它
静态变量:类名称.静态变量
静态方法:类名称.静态方法()

注意事项:

  1. 静态不能直接访问非静态
    原因:因为内存当中是先有静态内容,后有非静态内容
  2. 静态方法当中不能用this
    原因:this代表当前对象,通过谁调用的方法,谁就是当前对象
public class Demo{public static void main(String[] args){MyClass obj = new MyClass();//首先创建对象,然后才能使用没有static关键字的内容obj.method();//对于静态方法来说,可以通过对象名进行调用,也可以直接通过类名称来调用obj.methodStatic();//正确,不推荐,这种写法在编译之后会被javac翻译成为“类名称.静态方法”MyClass.methodStatic();//正确推荐}
}
public class MyClass{int num;//成员变量static int numStatic;//静态变量//成员方法public void method(){System.out.println(“这是一个成员方法”);//成员方法可以访问成员变量System.out.println(num)//成员方法可以访问静态变量System.out.println(numStatic); }//静态方法public static void methodStatic(){System.out,println(“这是一个静态方法”);//静态方法可以访问静态变量System.out.println(numStatic);//静态不能直接访问非静态System,out,println(num);//错误写法//静态方法中不能用this关键字System.out.println(this);//错误写法  }
}

静态代码块
静态代码块的格式:

public class 类名称{
static class 类名称{
//静态代码块的内容
}
}

特点:当第一次用到本类时,静态代码块执行唯一的一次
静态内容总是优先于非静态,所以静态代码块比构造方法先执行

静态代码块的典型用途:
用来一次性地对静态成员变量进行赋值

public class Demo{public static void main(String[] args){Person one = new Person();Person two = new Person();}
}

java.util.Arrays是一个与数组相关的工具类,里面提供了大量的静态方法,用来实现数组的常见操作

public static String toString(数组):将参数数组变成字符串(按照默认格式:[元素1,元素2,元素3 …])
public static void sort(数组):按照默认升序(从小到大)对数组的元素进行排序

备注:

  1. 如果是数值,sort默认按照升序从小到大
  2. 如果是字符串,sort默认按照字母升序
  3. 如果是自定义的类型,那么这个自定义的类需要有Comparable或者Comparator接口的支持。
public class Demo{public static void main(String[] args){int[] intArray = {10,20,30};//将int[]数组按照默认格式变成字符串String intStr = Array.toString(intArray);System.out.println(intStr);int[] array1 = {2,1,3,10,6};Array.sort(array1);System.out.println(Array.toString(array1));//[1,2,3,6,10]String[] array2 = {“bbb”,”aaa”,”ccc”};Array.sort(array2);System.out.println(Array.toString(array2));//[aaa,bbb,ccc]}
}

数学工具类
java.util.Math类是数学相关的工具类,里面提供了大量的静态方法,完成与数学运算相关的操作

public static double abs(double num);//获取绝对值,有多种重载
public static double ceil(double num);//向上取整
public static double floor(double num);//向下取整
public static long round(double num);//四舍五入

Java学习笔记_字符串/静态static相关推荐

  1. 【原】Java学习笔记022 - 字符串

    1 package cn.temptation; 2 3 public class Sample01 { 4 public static void main(String[] args) { 5 // ...

  2. JAVA学习笔记_银行账户系统

    大家好,我是一枚JAVA学习的小白,初次来到SCND还请多多指教!!!! 最近上编程课学习都挺晚的,没时间逛论坛了,今天休息正好也赶上线上,所以来发点学习笔记,一起讨论学习.(看我这个标点符号就知道我 ...

  3. 马士兵 java 学习笔记_马士兵java教程笔记1

    ---恢复内容开始--- 前记 虽然已经是个研究生了,但是会的东西还是特别的少 甚至连java都不能说是很会 所以准备从现在开始能好好的学习java 变成java master 标识符 标识符是由字母 ...

  4. Java学习笔记_抽象/接口

    抽象方法:就是加上abstract关键字,然后去掉大括号,直接分号结束 抽象类:抽象方法所在的类,必须是抽象类.在class前面写上abstract 如何使用抽象类和抽象方法 不能直接创建new抽象类 ...

  5. Java学习笔记_匿名/ArrayList

    引用类型的一般使用步骤: 导包 import 包路径.类名称 如果需要使用的目标类,和当前类位于同一个包下,则可以省略导包语句不写 只有java.lang包下的内容不需要导包,其它的包都需要impor ...

  6. Java学习笔记_类和对象

    ·类:是一组相关属性和行为的集合,可以看成是一类事务的模板,使用事物的属性特征和行为特征来描述该类事物. ·属性:该事物的状态信息 ·行为:就是该事物能够做什么 ·对象:一类事物的具体体现,对象是类的 ...

  7. Java学习笔记_数组

    数组的概念 是一种容器,可以同时存放多个数据值 数组的特点 数组是一种引用数据类型 数组当中的多个数据,类型必须统一 数组的长度在程序运行期间不可改变 数组的初始化 在内存当中创建一个数组,并且向其中 ...

  8. Java学习笔记_继承

    继承的格式 在继承关系中,"子类就是一个父类".也就是说,子类可以被当作父类看待 例如父类是员工,子类是讲师,那么"讲师就是一个员工" 定义父类的格式:(一个普 ...

  9. Java学习笔记_选择语句

    switch语句格式 switch(表达式){case 常量值1:语句体1;break;case 常量值2:语句体2;break;...default:语句体n+1;break; } break关键字 ...

最新文章

  1. ref与out的区别
  2. 揭秘 ClownFish 比手写代码还快的原因
  3. python字符串打印教学_python字符串格式化教你正确打印 : D
  4. 每日一练之贪心算法(P2587)
  5. Python全栈开发 day3
  6. html js页面传参
  7. 韩国防部长会见美驻韩大使 或谈韩日舰机矛盾
  8. 前端技术选型最佳神器!
  9. C++语言基础 —— STL —— 算法 —— unique() 的使用
  10. 【转】小木虫分享免费文献获得方法
  11. mysql-libs 5.6.23_利用rpm包手把手教你安装MySQL5.6.23
  12. 考拉Android统一弹框
  13. vue2.0路由(跳转和传参)经典介绍
  14. 全国计算机b类一级考试试题题库,全国计算机等级考试模拟题:一级B试题(一)...
  15. css如何放大网页字体大小怎么调整,CSS网页设计时关于字体大小的设计
  16. matlab中diamond,my-DIAMOND 经典的莫泰识别分析软件 ,在matlab平台下 238万源代码下载- www.pudn.com...
  17. 激活Office 365移动设备管理MDM服务
  18. 美军与敏捷领导力—八个改变工作方式世界的老兵
  19. 苹果查看电池实际容量
  20. 100个深度图像分割算法,纽约大学UCLA等最新综述论文

热门文章

  1. php 模糊过滤字符串,PHP简单字符串过滤方法示例
  2. Android开发之关于MVVM架构中视图数据绑定框架dataBinding的基本用法
  3. hibernate 出现Could not parse mapping document from resource 报错
  4. java并发中的延迟初始化
  5. Python爬虫入门教程 26-100 知乎文章图片爬取器之二
  6. 怎样利用细碎时间达到整体学习的效果
  7. jsp开发环境的搭建
  8. 主板的北桥芯片与南桥芯片
  9. python字符串输入_python如何输入字符串
  10. 数据库中主键和外键的设计原则