college java (java基础黑皮书)一到四章笔记总结

college java (java基础黑皮书)

第一章 java入门

java的地位

  • Java语言是一种 面向对象 的 高级 程序设计语言。

    • 面向对象具有三大基本特性:封装、继承、多态

    • 高级

      • 1)适合人类理解,不适合机器理解
      • 2)源代码程序需翻译成低级语言程序
    • 程序设计语言

      • 程序是使用编程语言来编写的

      • 用来编写计算机程序的语言,通常 分为三类:机器语言,汇编语言,高级语言

      • 源程序:用高级语言编写的程序称为源程序

      • 目标程序:由于计算机不识别源程序,所以使用一种称为编译器 (compiler)的程序将源程序翻译成低级语言的程序, 这种低级语言程序称为目标程序

      • 目标程序与其它支持库代码进行链接,从而构成可执行 文件,可执行文件就可以在计算机上运行了

        在这里插入图片描述
        在这里插入图片描述

  • java适用于服务器后台开发,JavaScript是java的缩版适用于网页开发

  • java版本:

    • java SE(标准版):用于pc端应用
    • java EE(企业版):用于企业应用
    • java ME(微型版):用于移动端

java的特点与组成:

  • java 具有语法简单,面向对象,稳定,与平台无关,多线程,动态等特点

    • 比C++简单:摒弃了C++里难以理解的多继承、指针等概念。
    • 面向对象 : Java是面向对象的编程语言
    • 平台无关:源代码程序→中间字节码文件→Java虚拟机→机器码→运行。
    • 多线程 : Java的特点之一就是内置对多线程的支持。多线程允许同 时完成多个任务。
    • 动态 : Java程序的基本组成单元就是类,有些类是自己编写的, 有一些是从类库中引入的,而类又是运行时动态装载的,这 就使得Java可以在分布环境中动态地维护程序及类库
  • java与其他语言相比,最大的优势是编写的软件能在执行码上兼容,在所有的计算机上兼容,之所以能做到这一点是因为java可以在计算机的操作系统上再提供一个java运行环境(Java Runtime Environment,JRE),该运行环境由java虚拟机(Java Virtual Machine,JVM),类库以及一些核心文件组成,也就是说只要平台提供了java运行环境(JRE),java编写的软件就能在其上运行

  • java虚拟机(JVM)

    • 无论哪种Java开发平台都需要具有Java虚拟机 (Java Virtual Machine)

    • Java虚拟机的核心是所谓的字节码指令

      • 字节码是可以被java虚拟机直接识别,执行的一种由 0,1组成的序列代码。

      • 字节码不是机器指令,因为他不和特定的平台相关,不能被任何平台直接识别,执行

      • java针对不同平台提供的java虚拟机的字节码指令都是相同的,因此能够实现平台无关性,例如所有的虚拟机都将11110000识别,执行为加法操作。

    • 与c/c++不同,java语言提供的编译器不针对特定的操作系统和cpu芯片进行编译,而是针对虚拟机把java源程序编译程被称为“字节码”(能够被虚拟机识别的)的“中间代码”。

      例如:,Java源文件中的+被编译成字节码指令111000字节码是可以被Java虚拟机识别、执行的代码,即Java虚拟机负责解释运行字节码,其运行原理是:Java虚拟机负责将字节码翻译成虚拟机所在平台的机器码,并让当前平台运行该机器码,如下图所示。

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kMegt7V5-1631451860164)(C:\Users\duanyf\AppData\Roaming\Typora\typora-user-images\image-20210905164443647.png)]

      在一个计算机上编译得到的字节码文件可以复制到任何一个安装了Java运行环境的计
      算机上直接使用。字节码由Java虚拟机负责解释运行,即Java虚拟机负责将字节码翻译成
      本地计算机的机器码,并将机器码交给本地的操作系统运行

    • 虚拟机负责将字节码文件(包括程序使用的类库中 的字节码)加载到内存,然后采用解释方式来执行 字节码文件。

      • 运行Java程序

      • 运行Java程序

      • 解释执行

  • java语言的执行过程

  • java程序的开发步骤

    • 编写源文件:扩展名必须是 .java。
    • 编译Java源程序:用Java编译器(javac.exe)编译源文件, 得到字节码文件(* . class)。
    • 运行Java程序:使用Java解释器(java.exe)来解释执行 字节码文件。

在这里插入图片描述

  • API

    应用程序接口(API)也称为库,包含了为开发java程序而预定义的类和接口。包含在jdk

    • JDK 与 JRE

      • Java开发平台( J2SE、J2EE、J2ME )均需要相应 的开发工具包(JDK、JRE)。

      • JDK和JRE

        • JRE:Java Runtime Environment (Java运行时环境)

          包含了运行Java程序的所需要的所 有组件,如JVM、动态库等。

        • JDK:Java Development Kit (Java开发工具包)

          • 包含 JRE, 开发、调试所需要的各种工具、类库等

          • JDK 1.8包含有数千个类(classes),数万个方法 (methods),涵盖了 网络 , 文件IO , 桌面(Swing/AWT)系统 , 安全 , 分布式操作 , 数据库访问等

          • JDK的主要内容如下:

            • 开发工具

              位于bin子目录中。指工具和实用程序,可帮助开发,执行,调试以java编程语言编写的程序,例如编译器javac.exe和解释器java.exe都位于该目录中。

在这里插入图片描述

          + java运行环境

            位于jre子目录中。java运行环境包括java虚拟机,类库,以及其他支持执行以java编程语言编写的程序的文件。	

          + 附加库

            位于lib子目录。开发工具所需的其他类库和支持文件。

          + C头文件

            位于include的子目录中。支持使用java本机界面,jvm工具界面以及java平台的其他功能进行本机代码编程的头文件

          + 源代码

            位于JDK安装目录之根目录中的sre.zip文件是Java核心API的所有类的Java编程语言
            源文件(即java.* 、 javax.* 和某些org. * 包的源文件,但不包括com.un*包的源文件)。

      + **注意:**

        + 1)若需要开发和运行Java程序,则必须下载并安装JDK 

        + 2)若只需要运行Java程序,而不开发Java程序,则只须下载并安装JRE
  • JDK,JRE,JVM 的关系

在这里插入图片描述
在这里插入图片描述

简单的java程序

1.系统环境的设置

1.右键单击“此电脑”–>选择“属性”–>点击”高级系统设置”–>选择“高级”–>“环境变量”

2.配置环境变量

①新建系统变量(JAVA_HOME)

变量名: JAVA_HOME
变量值: C:\Program Files\Java\jdk1.8.0_151;(注意:此处为你的jdk安装路径)

img

② 新建系统变量(CLASSPATH)——CLASSPATH为java加载类(class or lib)路径。(此步一般可省略)

变量名: CLASSPATH
变量值: .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;

注意:注意前面的点号和分号都是有的。

img

③编辑系统变量(PATH)——PATH使得系统可在任何路径下识别java命令。

变量名: PATH
变量值: %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;(注:不要清空掉path中的其他环境变量)

img

然后点击两个确定,之前的操作也都要点击确定。

(win7下Path打开后可能不是这样的页面,打开后需要手动输入这两个变量名,每个变量名都用英文分号隔开即可)

==分割线

3.测试配置是否成功
点击"开始"—>“运行”(或按下win+R),键入"cmd";

在命令行中输入“java -version”、“java”显示如下环境就说明环境配置成功!

img

img

原文链接:https://blog.csdn.net/sinat_36264666/article/details/78571128

2源文件的编写,保存,运行

编写:

public class Hello{
  public static void main(String args[]){
  System.out.println("大家好");
  System.out.println("我是段金龙");
  Student st=new Student();
  st.speak("在下无敌");
  }
  

}


class Student{
  public void speak(String s){
  System.out.println(s);
  
  
  }

保存:

  1. 用文本编辑器,如记事本打开文件,并将其另存为ANSI编码,然后执行javac Test.java即可。

    这里写图片描述

  2. 运行时指定编码方式,使用javac -encoding UTF-8 Test.java也可以编译成功。

注意:

不适用以上保存方法会出现:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-m5UYF9ai-1631451860175)(C:\Users\duanyf\AppData\Roaming\Typora\typora-user-images\image-20210905201354156.png)]

运行:

  • 最多只有一个类可使用public,pubic+类 是主类

  • main方法:

    • 1.main方法是java应用程序运行时的入口
    • 2.解释器通过调用main方法执行程序
  • 有几个类就产生几个class文件 ,编译完上文代码运行前就会产生

在这里插入图片描述

  • Hello.class是应用程度运行的,Hello.java还未运行可以有多个main

    执行的是.class文件,之所以是java Hello是因为系统会自动加.class

    有多个main的情况例如:

    public class Hello{
      public static void main(String args[]){
      System.out.println("大家好");
      System.out.println("我是段金龙");
    
      }
      
    
    }
    
    
    class Student{
      public static void main(String args[]){
    
      System.out.println("hhhhh");
      
      
      }
    
    }
    

    结果:

在这里插入图片描述

执行的.class文件 有多少个main不会导致程序报错

javac.exe:是编译Java源代码的应用程序

java.exe:是解释执行Java字节码的应用程序

易错题型

1.

答案:B

解析:Java语言程序翻译成低级语言程序是.class中间字节码文件,不能直接执行,需要JVM去解释执行。

对下面的Java程序,

class PersonA {

  void speakHello() {  

      System.out.println("nice to meet you");

  }

  public static void main(String args[]) {

      System.out.println("you are welcome");

  }

}

public class PersonB {

   void speakHello() {  

      System.out.println("欢迎你");

  }

}

class TestPerson {       

   public static void main(String args[]) {

      System.out.println("你好");

  }

}

试判断对错:
 程序中有多个main方法,编译器无法找到执行入口,所以程序有错误。

答案:错误

解析:Java程序编译后,每个类产生各自独立的.class文件,执行时互不影响。

第二章 基本程序设计

java 数据类型

Java的数据类型分为两大类:基本数据类型和引用数据类型

基本数据中保存数据值,而引用类型数据中保存地址

在这里插入图片描述
在这里插入图片描述

注意:

浮点数的精度问题(浮点数的计算是近似的)

System.out.println(1.0 - 0.9); 显示的是0.09999999999999998 而不是0.1

  • 整型直接量默认为是int型

    System.out.println(2147483648); // 超出范围会引起编译错误
    

    要写一个long型的整型直接量,在其后加字母L或l

    因为l(L的小写)很容易与1(数字1)混淆,因此建议使用大写 L

    由于2147483648超出了int型的范围,必须表示成2147483648L

    System.out.println(2147483648L);//编译成功 结果2147483648
    
  • 浮点型直接量默认为 double型

    例如:5.0 被认为是 double 型而不是 float 型

    可以通过在后面加字母 f 或 F 表示 float 型直接量 加 d 或 D 表示 double 型直接量
    100.2f 或 100.2F 表示 float 类型的值
    100.2d 或 100.2D 表示 double 类型的值
    double 型的值比 float 型更精确

注意:

1)在Java中,没有byte、short型字面直接量

2)只有默认的int 、double型直接量

3)long型直接量需在数值后加 L ,float型直接量需在数值后加 F

  • 科学计数法

浮点型直接量也可以用科学记数法表示,

如:

1.23456e+2 或 1.23456e2 —> 1.23456×102 —> 123.456

1.23456e-2 —> 1.23456×10-2 —> 0.0123456

e表示指数,也可以大写为E

注意:

反过来,用科学记数法表示的数值是浮点类型(double)。

例:10e2 表示 1000.0 , 而不是 1000。

  • 转型

转型范围排序:double>float>long>int

隐式转型:小范围可给大范围赋值

		int a=10;
		double b=a;
		System.out.println(b);  //结果10.0

显式转型:大范围转成小范围 需要强制转型

		double b=10.0;
		int a=(int)b;
		System.out.println(a);  //结果10
  • 字符串连接

若为字符串的连接时,自动把数值转换成字符串, 再进行连接

public static void main(String [] args) {
		//数值与字符运算 会变成字符运算
		System.out.println(1+2);
		System.out.println(1+""+2);
		//1与字符进行运算变成字符1 字符1与2运算同理
		System.out.println(1+2+"hhh"+1+2);
		System.out.println(1+2+"hhh"+(1+2));

	}

运行结果:

3
12
3hhh12
3hhh3

字符串注意

1.在Java源代码中,一个字符串是不能跨行的 下面的语句会造成编译错误: System.out.println("Introduciton to java

Programming, by Y.Daniel Liang");

改正:将该字符串分成两个独立的字符串,再用+连接:

System.out.println("Introduciton to java " + “Programming, by Y.Daniel Liang”);

2.char是单引号是单个字符,String是双引号是字符串

3.字符打印出的是ASCII码与此不同

标识符

定义:

标识符是用来标识变量、常量、方法、类、对象等元素的 有效字符序列。

命名规则:

  • 标识符是一个由字符、数字、下划线( _ )或美元符号($)构成 的字符串
  • 标识符必须以字符、下划线(_)或美元符号($)开头,不能用 数字开头
  • 标识符不能是Java保留字 和 true、false、null等字面常量
  • 标识符可以有任意的长度,但实际命名不宜过长

数值运算

在这里插入图片描述

  • 整数与整数运算,结果为整数
  • 整数与浮点数运算,结果为浮点数
double b=10.0;
int a=(int)b;
System.out.println(b);  //结果10.0
  • 强制转换不改变被转换变量的值!

  • 两数取余时,只有当被除数是负数时,余数才是负的 (其它情况均为正)

例:5%2 = 1 5%-2 = 1 -5%2 = -1 -5%-2 = -1

幂运算

幂运算使用Java API的Math类的pow方法

语法格式:Math.pow(a , b) //表示a b (double类型)

例子:

Math.pow(2, 3) //返回 8.0

Math.pow(4, 0.5) //返回 2.0

Math.pow(2.5, 2) //返回 6.25

Math.pow(2.5, -2) //返回 0.16

例子:

在这里插入图片描述

注:

1)由于要保留小数点后面两位,因此先乘以100,取整(截去小数部分),再除以100.0

2)由于要四舍五入,因此要先加上0.005

字符类型

通常计算机采用ASCII码(8位编码),Java支持 Unicode编码(16位编码)
在这里插入图片描述

Unicode 编码

  • 统一码协会建立的一种16位编码方案,支持世界不同语言 的文本交换、处理和显示。

一个统一码占两个字节,书写上用以\u开头的4位十六进制数 表示,

范围从 ‘\u0000’ 到 ‘\uFFFF’,共65536个

包括ASCII码(从’\u0000’到’\u007F’对应的128个字符)

  • 字符与字符串的区别
	System.out.println("3");
	System.out.println('3');

结果都是 3 无区别

	System.out.println( 2 + "3");  	
	System.out.println( 2 + '3');

结果为: 23 53

即在字符运算时是以其ASCII码进行数值运算

总结

1.字符型在直接输出时

System.out.println('S');  //结果为字符 仍是

2.字符与字符比较时,是按照Unicode码进行比较

3.字符与数字运算时会用其Unicode码

System.out.println( 2 + '3'); //结果为53
  • 特殊字符转义含义

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YHUjgrcR-1631451860186)(C:\Users\duanyf\AppData\Roaming\Typora\typora-user-images\image-20210909204951674.png)]

获取输入

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HAIgaQwI-1631451860187)(C:\Users\duanyf\AppData\Roaming\Typora\typora-user-images\image-20210909205434462.png)]

public class ScannerInput {
	public static void main(String [] args) {
		Scanner scanner=new Scanner(System.in);
		System.out.println("请输入整数:");
		int intinput=scanner.nextInt();
		System.out.println("你输入了:"+intinput);
		
		System.out.println("请输入浮点数:");
		double doubleinput=scanner.nextDouble();
		System.out.println("你输入了:"+doubleinput);
		
		System.out.println("请输入字符串:");
		String stringinput=scanner.next();
		System.out.println("你输入了:"+stringinput);


	}

}

结果:

第三章 选择

基本控制结构

  • 顺序结构:就是按照语句的书写顺序从上到下、逐条语 句地执行。执行时,排在前面的代码先执行,排在后面 的代码后执行。

  • 选择结构:是根据条件来判断并选择执行语句的结构, 也称分支结构。

  • 循环结构:重复执行某一部分代码,即利用计算机高速 处理的特性,完成大量有规则的重复运算

逻辑运算符

逻辑运算符 (logical operator)又称为布尔运算符(boolean operator )

  • 连接的操作数具有布尔值(true or false)

  • 运算结果:得到新的布尔值

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oDtfM5Cp-1631451860189)(C:\Users\duanyf\AppData\Roaming\Typora\typora-user-images\image-20210912184536763.png)]

java 运算符优先级

Switch

在这里插入图片描述

char grade ; // 学生的等级
String range = ""; //成绩范围 (需要初始化!)或者在在default中赋值
grade = ; //给等级赋值
switch( grade ){
case 'A': range= "90~100";
break;
case 'B': range= "80~89"; 
break;
case 'C': range= "70~79";
break;
case 'D': range= "60~69";
break;
case 'E': range= "0~59";
break;
default: range = "bad grade";
}
System.out.print("grade: "+ grade +", rang: "+ range);

条件表达式

条件表达式:基于一个条件来计算表达式的值

条件运算符又称为“三元运算符” ,是Java中唯一 的一个三元运算符

语法格式:

(booleanexp) ? exp-for-true : exp-for-false

例子:

假设数值型变量num1和num2,输出较大值

if(num1 > num2){
System.out.println(num1);
}
else {
System.out.println(num2);
}

等价于

System.out.println( (num1 > num2)? num1:num2 );

在这里插入图片描述

闰年代码

四年一闰,百年不闰,四百年再闰。


import java.util.Scanner;

public class LeapYearVerifier {
	public static void main(String[] args) {
		Scanner scan=new Scanner(System.in);
		System.out.println("请输入年份:");
		int year=scan.nextInt();  //获取输入值
		boolean ifLeapYear=(year%4==0&&year%100!=0)||year%400==0;
		System.out.print(year+"是否是闰年?");
		System.out.println(ifLeapYear);
	}

}

结果

注意

2000年虽然被100整除使得"||"前的表达式为假但是2000年又被400整除,“||”只要有一真则真

易错题型

  • 编写一个赋值语句,当变量num的值在1到100之间 时,将变量flag赋值为true,否则赋值为false。
flag = ( (num >= 1) && (num <= 100) ) ;
  • 编写一个赋值语句,当变量num的值在1到100之间, 或者为负时,将变量flag赋值为true,否则赋值为 false。
flag = ( ( (num >= 1) && (num <= 100) ) || (num < 0) );
  • 为|x-5| < 4.5 编写一个布尔表达式。
( ( x – 5 ) >4.5 ) && ( ( x – 5 ) < 4.5 ) 
  • 为|x-5| > 4.5 编写一个布尔表达式。
( ( x – 5 ) <4.5 ) || ( ( x – 5 ) > 4.5 )
  • 将下列布尔表达式改写成等价的其它形式:

    ( x != 1 ) && ( x != 2 ) && ( x != 3 )

 ! ( ( x == 1 ) || ( x == 2 ) || ( x == 3 ) )
  • 执行下列switch语句之后,x 、y 的值分别是多少?
int x = 3, y = 3;
switch(x+3){
case 6: y = 1;
default: y += 1;
}

x=3,y=2;

使用if-else语句改写上面swtich语句

提示:没有break,(x+3) == 6时需要执行到底

if((x+3) == 6){
y = 1;
y += 1;
}
else {
y += 1;
}

第四章 数学函数,字符,字符串

数学函数

java常用数学函数

  • Java语言提供Math类(包含在Java.lang包中,隐式导入)
  • Math类包含完成基本数学函数所需的方法。
    • 三类:三角函数方法、指数函数方法和服务方法。
    • 其中服务方法包含取整、求最小值、最大值、绝对值和 随机值
  • 在Math类中定义了两个double型常量:PI 和 E
    • PI就是π的值,而E即e指数底的值,分别是: 3.141592653589793 和 2.718281828459045
    • 在程序中可以直接使用 Math.PI 和 Math.E
三角函数

弧度与三角度数

  • 弧度制:用弧度作单位来度量圆心角的制度
  • 1弧度的角:等于半径长的圆弧所对的圆心角。 (即弧长等于半径的弧,其所对的圆心角为1弧度)

在这里插入图片描述

  • 弧度制:是用弧的长度来度量圆心角的一种方法
  • 弧度制的基本思想:使圆周长与圆半径具有同一的度量单 位,然后用弧长与圆半径之比来度量角度。 ( 即 弧度 = 弧长 / 半径 )
  • 圆的一周,弧度数:2πr / r = 2π 角度数:360度,则 2π弧度 = 360度;所以:1角度 = π/180 弧度 1弧度 = 180/π角度(1弧度约为57.3°)
  • 由圆心角计算弧长:弧长 = nπr/180(n为圆心角度数) (即圆心角n所对应的弧长)

在这里插入图片描述

例子

在这里插入图片描述

指数函数

在这里插入图片描述

e是指数e

取整函数

在这里插入图片描述

例子

最大值、最小值、绝对值
  • 求最小值:Math.min( a , b )

    • a、b 可以是int 、long 、 float 或 double 类型

    • 返回值的类型为 a、b 的类型中较大的一个

  • 求最大值:Math.max( a , b )

    • a、b 可以是int 、long 、float 或 double 类型

    • 返回值的类型为 a、b 的类型中较大的一个

  • 求绝对值:Math.abs( a )

    • a 可以是int 、 long 、 float 或 double 类型
    • 返回值的类型与 a 的类型相同
随机值
  • Math.random():

    • 获取区间[a, b) 内的一个随机整数:
    (int)( a + Math.random( ) *(b - a) )
    
    • 获取区间 a ~ b 之间的一个随机整数:
    (int)( a + Math.random( ) *(b – a + 1) )
    
  • random.next…():

    • 获取区间[a, b) 内的一个随机整数:
    a+ran.nextInt(b-a)
    
    • 获取区间 a ~ b 之间的一个随机整数:
    a+ran.nextInt(b-a+1)
    

字符类型的操作

Unicode 编码 n 由统一码协会建立的一种16位编码方案,支持世界不同语言 的文本交换、处理和显示。 n 一个统一码占两个字节,书写上用以\u开头的4位十六进制数 表示

范围从 ‘\u0000’ 到 ‘\uFFFF’,共65536个 包括ASCII码(从’\u0000’到’\u007F’对应的128个字符

字符类型与数值类型的转换
  • 字符类型可以转换成任意的数值类型

    • 隐式转换(当转换结果适用于目标变量)
    byte x = 'a'; // 'a'的Unicode码是97,在byte和int范围内
    int y = 'a'; // x、y 的值均为97
    
    • 显式转换(即强制转换,当转换结果不适于目标变量时)
    byte x = '\u0101'; //不正确, '\0101'的Unicode码超出byte的范围
    byte y = (byte) '\u0101'; //正确,截取低8位,即0x01,y的值为整数1
    
  • 任意的数值类型可以转换成字符类型

    • 隐式转换(当转换结果适于char类型时)
    char ch1 = 97; // ch1的值为'A'
    char ch2 = 0x41; // ch2的值为'A'
    
    • 显式转换(即强制转换,当类型不匹配或数值超出char类型的范围时)
    char x = (char)50.25; //正确,截取整数值50,x的值为字符 '2'
    char y = (char)0xF0041; //正确,截取低16位,y的值为字符 'A'
    
    

参与数学运算时,字符型数据会自动转换成数值(ASCII码)

Character类字符判别方法

字符串

从字符串中获取字符
  • 使用 charAt ( index ) 方法

例如:

String message = "Hello,World";
message.charAt(5); // 返回 ","
  • 索引从 0 开始,到 message.length( ) - 1

  • 注意,不能使用数组下标,如 message[5](错)
连接字符串

两种方法:

  • 字符串直接相加 (用"+")
String str1 = "Hello";
String str2 = "World";

String str3 = str1 + str2;//str3: "HelloWorld"

str1的值不变

  • 使用 String 的 concat 方法
String str1 = "Hello";
String str2 = "World";

String str4 = str1.concat(str2); //str4: "HelloWorld"

str1的值不变

  • 多个字符串相加,支持连写:
String str5 = str1 + str2 + str3 + str4;
String str6 = str1.concat(str2).concat(str3).concat(str4);

字符串的转换与比较

字符串的转换

  • 一旦字符串被创建之后它的内容就不能改变。可以使用字符串转换方法将字符串转换为新字符串(但是原来的不变
  • 常用的转换方法有:

在这里插入图片描述

  • 例子
"Hello,world".toLowerCase() 得到新字符串"hello,world"
"Hello,world".toUpperCase() 得到新字符串"HELLO,WORLD"
" Hello world ".trim() 得到新字符串"Hello world"

String的比较方法

在这里插入图片描述

**字符串比较之compareTo方法 **

注意:

>、>=、<、<= 等比较运算符只能比较两个字符不能比较两个字符串

**compareTo方法 **

在这里插入图片描述

注意:只比较到可比较的第一个字符 后面的不管

例如:

		String str1 = new String("Hello,Wo");
		String str2 = "Hello,wO";
		System.out.println(str1.compareTo(str2));

结果为:-32

str1<str2 即使w后的o大于O依旧不管甚至多几个字母结果依然是-32

获取,查找,替换子字符串

substring 方法(获取)

  • public String substring( int beginIndex , int endIndex )

    注: beginIndex: 开始点的索引,包含本字符(索引起始为0) endIndex: 结束点的索引,不包含本字符 得到从 beginIndex 到 endIndex - 1 之间的子串。

  • public String substring( int beginIndex )

    注: beginIndex: 开始点的索引,包含本字符 得到从 beginIndex 开始直到字符串结束的字

indexOf 方法(查找)

在这里插入图片描述

replace 方法(替换)

在这里插入图片描述

实例

在这里插入图片描述

数字字符串与数值间的转换
  • 数字字符串转换为数值

    • 数字字符串 -> int
    Integer. parseInt(String)
    
    • 数字字符串 -> float
    Float. parseFloat(String)
    
    • 数字字符串 ->double
    Double. parseDouble(String)
    

注意:int 、double 是基本数据类型;Integer、Double是对象(引用类型) 若字符串不是数值字符串,则会导致运行错误,

如: int intValue = Integer.parseInt(“8abc”); // 运行错误!

  • 数值转换为数字字符串

    • 将数值与一个空字符串连接
    20.5 + "" ;
    "" + 20.5 ;// 得到"20.5"
    
    • 用 String 类中的 valueOf 方法

    String.valueOf( a ),a 可以是任意的数值 、字符 或 字符串

    String value1 = String.valueOf(12); // int ->String:"12"
    String value2 = String.valueOf(12.0); // double  -> String:"12.0"
    String value3 = String.valueOf('9'); // char  -> String:"9"
    String value3 = String.valueOf('c'); // char  -> String:"c"
    
    
  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值