J2SE核心开发实战(二)——字符串与包装类

字符串与包装类

一、实验简单介绍

在本章。我们将学习一些用于处理字符串的API以及包装类的相关知识。

本章知识点

  • 字符串API
  • 包装类及其应用

二、认识字符串类

1. 什么是字符串类

Java字符串类(java.lang.String)是Java中使用最多的类。也是最为特殊的一个类,非常多时候,我们对它既熟悉又陌生。

首先你要知道什么是字符串:

字符串(String)是由数字、字母、下划线组成的一串字符,是编程语言中表示文本的数据类型。

你能够查看很多其它关于字符串的知识

操作字符串的经常用法有复制、计算其长度、查找字符串中的某些字符等。

然而,Java标准库中的String类包括非常多的方法,要想记住全部的类和方法是一件不太可能的事情。最好的办法就是养成随时查阅API文档的习惯。在最后的參考文献中我们为你提供了官方API文档的链接,你能够在当中具体查看每个操作字符串的方法。

查阅API文档对于未来章节的学习也十分重要,请保持这个习惯。

2. 用String类中的自带方法操作字符串

在Eclipse中创建项目StringUtil,新建一个com.shiyanlou.course包,并创建StringTools类。

这里会用到trim()substring()equals()length()方法。

- String trim(),该方法返回一个新字符串,新的字符串删除了原始串中首尾的空格。

- String substring(int beginIndex, int endIndex),该方法返回一个新字符串,新的字符串包括原来字符串中从beginIndexendIndex-1的全部内容。

- boolean equals(Object other),该方法用于比較两个字符串,假设原字符串与忽略大写和小写的情况下与other相等,则返回true

- int length(),该方法返回一个字符串的长度。

这个项目首先须要获取来自用户的输入。然后去除输入的字符串中首尾多余的空格。再与字符串shiyanlou相比較,假设两个字符串同样。则截取该字符串前6位部分作为新的字符串。

基本的代码例如以下:

同样,你不必在实验环境中输入这些中文凝视。

package com.shiyanlou.course;

import java.util.Scanner;

public class StringTools {

    public static void main(String[] args) {
        String a = new String();
        String b = new String();
        String c = new String();
        //创建3个字符串对象

        Scanner scan = new Scanner(System.in);// 创建扫描器
        System.out.println("Please input a sentence with 10 more letters include space(s) : ");
        // 获得用户输入的包括空格的字符串

        a = scan.nextLine();
        //将键盘上的输入赋到字符串a中

        b = a.trim();
        //将a中头部和尾部的空格去掉,赋值到b中

        if(b.equals("shiyanlou"))
            c = b.substring(0, 6);
        else {
            c = "";
        }
        //假设b字符串为shiyanlou,则取其第0个到第6个字符作为子串,赋值到c中
        //假设b字符串不为shiyanlou。则c的值为空

        System.out.println("a :"+a);
        System.out.println("The length of a is :"+a.length());
        System.out.println("b :"+b);
        System.out.println("The length of b is :"+b.length());
        System.out.println("c :"+c);
        System.out.println("The length of c is :"+c.length());
        //分别输出a、b、c三个字符串及其长度
    }

}

点击编译并执行,在控制台先输入5个空格。紧接着输入shiyanlou,再输入4个空格并回车。能够看到输出结果例如以下:

watermark/1/image/aHR0cDovL3N5bC1zdGF0aWMucWluaXVkbi5jb20vaW1nL3dhdGVybWFyay5wbmc=/dissolve/60/gravity/SouthEast/dx/0/dy/10" alt="字符串" title="">

你可能想问:我们在比較字符串的时候为什么不用==而用equals()呢?

你能够点此了解很多其它关于”==”和equals的信息

三、认识包装类

1. 什么是包装类

我们知道,Java语言是面向对象的。但Java中的基本数据类型却不是面向对象的。这在实际使用过程中造成了诸多不便。

为了解决此问题,Java语言的设计者们在设计类时,为每种基本数据类型也设计了一个相应的类。这八个和基本数据类型相应的类统称为包装类(Wrapper Class),也称为外覆类或数据类型类。

包装类均位于java.lang包中,下表给出了包装类和基本数据类型的相应关系:

基本数据类型 相应包装类
byte Byte
boolean Boolean
short Short
char Character
int Integer
long Long
float Float
double Double

包装类的用途主要包括两种:

- 作为和基本数据类型相应的类类型存在,方便涉及到对象的操作。

- 包括每种基本数据类型的相关属性如最大值、最小值等。以及相关的操作方法。

以下我们通过一个样例来进一步认识包装类。

2. 比較Double类型

首先你应该知道doubleDouble的差别,前者是基本的数据类型,后者是引用类型。即包装类。我们能够直接使用普通运算符“==”对基本数据类型进行比較。但假设将“==”用于比較引用类型的话,仅仅会推断其内存地址是否同样。而且结果一般是否定的。

在Eclipse中创建项目DoubleCompare,新建一个com.shiyanlou.course包。并创建DoubleCompare类。

在该类的main()方法中,定义两个含有数字的字符串并将其转换为Double类型的数据。

String s_1 = "123.321";
String s_2 = "567.765";
//显然,这里的123.321和567.765都不是数值。而是“一句话”
//你也能够自己定义这些数字

Double num_1 = Double.parseDouble(s_1);
Double num_2 = Double.parseDouble(s_2);
//定义了Double类型的数据,并将字符串转换为双精度浮点数赋予其值

上面的parseDouble(String s)就是Double类中自带的将字符串中的数字转换为double类型的方法。

我们再将其输出。

System.out.println("number 1: " + num_1);
System.out.println("number 2: " + num_2);

然后我们来比較这两个数据。主要代码例如以下:

switch (num_1.compareTo(num_2)) {
    case -1:
        System.out.println("number 1 is smaller than number 2");
        break;
    case 0:
        System.out.println("number 1 is equal to number 2");
        break;
    case 1:
        System.out.println("number 1 is bigger than number 2");
        break;
}

相信你能够理解这个分支语句的含义。须要特别说明的是。compareTo(Double anotherDouble)也是Double类提供的一个方法,用于比較两个Double类型数据的大小,返回值为int类型。-101分别代表小于、等于和大于。

该案例的完整代码例如以下图所看到的:

watermark/1/image/aHR0cDovL3N5bC1zdGF0aWMucWluaXVkbi5jb20vaW1nL3dhdGVybWFyay5wbmc=/dissolve/60/gravity/SouthEast/dx/0/dy/10" alt="完整代码" title="">

点击编译并执行。能够在控制台看到输出结果:

四、实验总结

在本章我们主要学习了字符串的定义和经常使用的生成子串、去除空格、比較等方法,和包装类的定义及其基本的操作方法。

參考文档中为你提供了很多其它关于它们的知识。最好还是试试字符串拼接等本课程还未用到的方法。

在实验楼学习结束后,也不要忘记多看看这些API文档,多动手写写代码,天道酬勤!

五、作业

请使用String类的toLowerCase()toUpperCase()方法写一个字符串大写和小写转换工具。

參考文档

关于字符串API,你能够查看Java SE官方文档获取很多其它更好玩的内容:

+ Java SE官方API文档 - Java.lang.String

以下是Java中一些包装类的官方技术文档:

我们没有给出全部的包装类參考文档。请你自己动手Ctrl+F体会一下查找的过程。

本文原文链接:https://www.shiyanlou.com/courses/111 本课为实验楼原创课程,转载请注明。

时间: 2024-08-14 23:23:09

J2SE核心开发实战(二)——字符串与包装类的相关文章

J2SE核心开发实战(一)——认识J2SE

认识J2SE 一.课程简介 在本章学习开始前,你应该具备一些Java的基础知识.我们将在本章来认识J2SE,并复习一下前面学过的面向对象的相关知识. 注:所有的蓝色文字都是带超链接的,这些链接是本课程为你提供的扩展知识点,一定不要错过. 本章知识点 J2SE的定义和架构 面向对象 二.什么是J2SE 1. J2SE的定义 J2SE,全称为Java 2 Standard Edition.Java 2平台包括:标准版(J2SE).企业版(J2EE)和微缩版(J2ME)三个版本.J2SE即Java 2

J2SE核心开发实战

原图链接:http://naotu.baidu.com/file/7e3fb5d333b8cb665038390617834559?token=3c3c9d183944dd8e 课程来源:https://www.shiyanlou.com/courses/111

Gin + Vue全栈开发实战(二)

尝试地写了第一篇自己学习Go Web框架的感受和入门的文章,发现反响还不错,大家也提出了很多的问题来一起交流.近期也渐渐地出现了很多有关go语言开发的相关文章,包括有在蚂蚁金服的大牛的分享,我也一直有在看博客园和学习,这里越来越多人的去学习和使用Go,感觉也是非常好的趋势.希望和大家一起来继续学习. Gin路由 本章概要 路由(Router)介绍 Handler(处理器)介绍 2.1 路由(Router)介绍 路由是一个非常重要的概念,所有的接口都要有路由来进行管理.虽然传统的J2EE(通过Sp

Flash 游戏开发实战(二)

我们必需修改一个在教程一中的代码,就是让阳光只是简简单单地出现在某一区块中,并且在一段时间内,若没有被捡起,它就消失了.我们得让阳光平滑的落下. 修改newSun函数 细心的读者可能会发现,教程一里的newSun函数有一个错误使得新生的阳光无法出现在游戏区域内的任意一个区块.这个错误可以通过修改x属性的值来修复: sun.x=52+sunCol*65;(教程一里写成了sun.x=52+sunRow*65) 既然我们将要加入使得阳光平滑落下的代码,整个newSun函数可以改成这样: private

开源分享二(Android相机开发实战)

开源分享二(Android相机开发实战) 开源分享 一(StickerCamera + 仿微信多图选择) 前言 上篇博文给大家分享了两个非常实用的项目功能模块,不知道大伙感觉如何?有木有一种臭袜子味扑鼻,酸爽的赶脚!!!贱笑贱笑了~ ~ OK!不扯淡了,言归正传.本文将主要为大家介绍Android中自定义相机的开发,做Android应用的童鞋应该都知道,在应用中使用相机功能有两种方式: 调用Camera API 自定义相机 调用系统相机 由于需求不同,所以选择的方案固然也不同,至于第二种调用系统

【课程分享】ASP.NET MVC5&微信公众平台整合开发实战(响应式布局、JQuery Mobile,Windows Azure、微信核心开发)

对这个课程有兴趣的,能够联系我QQ2748165793 基础知识储备 ASP.NET MVC 5基础(6讲) 第一讲-初识ASP.NET MVC并搭建整合开发环境 第二讲-深入MVC开发模式 第三讲-C#核心语言特性 第四讲-C#核心语言特性(二) 第五讲-视图引擎Razor 第六讲-MVC核心工具 实战演练(11讲) 第七讲-体育商店(一):项目架构 第八讲-体育商店(二):数据库创建和訪问 第九讲-体育商店(三):分页和样式 第十讲-体育商店(四):布局和导航 第十一讲-体育商店(五):购物

JAVA实战教程_JAVA案例开发之JAVA开发微信二维码大数据开发03

大家好,这次是第三个课时的视频,欢迎大家继续学习. 视频简介:本视频是关于JAVA实战教程,JAVA开发微信二维码大数据系统.这个JAVA开发案例可以协助一些从零基础开始学习JAVA,正处于理论走完实践的路程上的初学者能接触到实际开发项目过程中,在实践当中巩固自己的JAVA方面的知识外,更能在项目案例当中学到解决在JAVA学习或者实践当中遇上问题的一些解决方式.仅供参考!自设交流群:457036818,欢迎一起加入交流. PS:该案例共十个课时,本小节为第二课时 课程原地址:http://www

JAVA实战教程_JAVA案例开发之JAVA开发微信二维码大数据系统02

hello,上一次我们上传了第一个课时的视频,现在当然是上传第二个视频咯. 视频简介:本视频是关于JAVA实战教程,JAVA开发微信二维码大数据系统.这个JAVA开发案例可以协助一些从零基础开始学习JAVA,正处于理论走完实践的路程上的初学者能接触到实际开发项目过程中,在实践当中巩固自己的JAVA方面的知识外,更能在项目案例当中学到解决在JAVA学习或者实践当中遇上问题的一些解决方式.仅供参考!自设交流群:457036818,欢迎一起加入交流. PS:该案例共十个课时,本小节为第二课时 课程原地

基于.net开发chrome核心浏览器【二】

原文:基于.net开发chrome核心浏览器[二] 一: 上一篇的链接: 基于.net开发chrome核心浏览器[一] 二: 相关资源介绍: chrome Frame: 让IE有一颗chrome的心,看起来不错,但我没有深入研究这个东西. http://www.google.com/chromeframe?hl=zh-CN&quickenable=true https://developers.google.com/chrome/chrome-frame/ WebKit.Net 已经有一段时间没