`
Sunshineminyan
  • 浏览: 16619 次
  • 性别: Icon_minigender_2
社区版块
存档分类
最新评论

基本数据类型和String类的总结

阅读更多
1.Java的基本数据类型
Java的基本数据类型有8种
整数类型:
byte 字节型 8bit -128~127  (负2的8次方到2的8次方-1)
short 短整型 16bit
int         整型         32bit
long 长整型 64bit
浮点型:
float 单精度 32bit
double 双精度 64bit
布尔
boolean 布尔类型 true和false
字符
char 字符型 16bit

2.String类的使用
1.String在Java中是类。
           String 类包括的方法可用于检查序列的单个字符、比较字
           符串、搜索字符串、提取子字符串、创建字符串副本并将
           所有字符全部转换为大写或小写。
           

         2.String表示的是字符串
           Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。

           字符串是常量;它们的值在创建之后不能更改。字符串缓冲区支持可变的
           字符串。因为 String 对象是不可变的,所以可以共享。例如:

              String str = "abc";
           等效于:

              char data[] = {'a', 'b', 'c'};
    
            String str = new String(data);
           使用字符串的基本方法,eg:
               System.out.println("abc");
               String cde = "cde";
               System.out.println("abc" + cde);
               String c = "abc".substring(2,3);
               String d = cde.substring(1, 2);

练习:统计字符串中每一个字符出现的次数


我的代码:
package ss;

public class string {

/**
* 主函数
*/
public static void main(String[] args) {
//定义一个字符串变量
String str="euriyui3743289^%^&*&DJHK2312";

//第一个循环:返回第i个引索处的char值
for(int i=0;i<str.length();i++){
char a=str.charAt(i);

int index=str.indexOf(a);
int n=str.lastIndexOf(a);//第i个字符所在的最后位置
int k=0;
//第二个循环:在给定字符串中找出与第一个循环中相同的字符
for(int j=index;j<str.length();j++){
char b=str.charAt(j);

if(a==b&&b!=' '){
k++;
if(j>=n)
//当且仅当找到最终出现的相同字符才输出个数
System.out.println(a+"字符出现的次数为"+k);
}
}
//第三个循环:用空格替换找出的相同字符
for(int x=0;x<str.length();x++){
char c=str.charAt(x);
if(c==a)
str=str.replace(c,' ');}


}
}
}
解题思路:
    在该代码中使用了三个循环,其中第一个和第二个循环构成一组内外循环;用于寻找字符串中相同的字符及计算其个数。第三个循环和第一个并列,用于将计算过的字符转换成空格。
    使用到的String类中的方法有charAt()、indexOf()、lastIndexOf()、length()、replace()。
    cherAt()在该代码中的作用是将字符串中的字符一个个拆分,易于比较。
    indexOf()和lastIndexOf()分别用来找到字符在字符串中出现的最前和最后位置。
    length()计算字符串的长度,使循环有一个终点。
    replace()是string中字符与字符之间的替换。

练习中遇到的问题及解答方法:
    1.首先想到用内外循环来完成对每个字符出现个数的计算。但因为开始时将计算个数的变量初始化k=0放在第一个循环之前,导致从第二个字符开始,每个字符出现次数都是前面字符与该字符总数之和,于是将初始化k=0放在第一个循环之内,这样,每计算一个字符时都会初始化k值。
    2.在循环时发现每次第二个循环中找出与第一个循环中相同的字符时就会立即输出个数,当遇到第二个时又会输出,同时个数+1,而且即使后面的字符与前面的相同,也会重复输出。解决前者,用到了lastIndexOf(),直到找到了最后一个才输出。解决后者,用到了replace(),将找过的字符用空格替换,只有当找出的字符不是空格时才输出。但其实这样再用一个循环比较繁琐。
   

看看其他人的代码:

同组组员代码:
package stringcount;

public class ctest0705 {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String str = "hdjsakhdjksahkdjhasyrtr";
int n;
//外循环:从字符串第一个开始与后面的比较
for(int i = 0;i < str.length();){
char a = str.charAt(i);
int k = 0;
//内循环:从被比较的开始进行比较,相同k+1
for(n = 0;n < str.length();n++){
char b = str.charAt(n);
if(a == b)
k++;
}
System.out.println(a+"的个数为"+k);
String str1 = str.valueOf(a);
str = str.replace(str1, "");
}

}
}
老师的代码:
package cn.netjava.lesson01;

public class StringPractise {

/**
* @param args
*/
public static void main(String[] args) {
// 实例化一个接受命令行输入信息的对象
java.util.Scanner sc = new java.util.Scanner(System.in);

// 实例化StringPractise类的对象
StringPractise sp = new StringPractise();
System.out.println("请输入要统计的字符串:");
// 获取输入的一行字符串
String temp = sc.nextLine();
System.out.println("开始使用第一种方式统计.");

//调用第一种统计的方式
sp.wayOne(temp);

System.out.println("请输入要统计的字符串:");
// 获取输入的一行字符串
temp = sc.nextLine();
System.out.println("开始使用第二种方式统计.");
// 调用第二种统计的方式
sp.wayTwo(temp);

}

/**
* 第一种统计方式 根据ascii和数组来实现
*/
public void wayOne(String temp) {
// 定义一个存储统计次数的数组
int[] array = new int[256];
// 循环遍历字符串
for (int i = 0; i < temp.length(); i++) {
// 获取指定索引位置的字符
char c = temp.charAt(i);
// 将字符转换为对应的ascii
int ascii = c;
// 将对应的ascii位置的数组元素加1
array[ascii]++;
}

// 输出
for (int i = 0; i < array.length; i++) {
// 如果统计个数部位0则输出
if (array[i] != 0) {
char c = (char) i;
System.out.println("字符" + c + "出现的次数是" + array[i]);
}
}
}

/**
* 第二种统计方式 根据replace方法来实现
*/
public void wayTwo(String temp) {
// 循环遍历字符串
for (int i = 0; i < temp.length();) {
int count = 1;// 计数器
// 循环遍历字符串,从i+1的基础上开始,让i位置的每一个字符都与后边的字符进行比较
for (int j = i + 1; j < temp.length(); j++) {
// 如果相等
if (temp.charAt(i) == temp.charAt(j)) {
// 计数器加1
count++;
}
}
System.out.println("字符" + temp.charAt(i) + "出现的次数是" + count);
// 将相同的字符全部都替换为空
temp = temp.replace(temp.charAt(i) + "", "");
}

}

}
分享到:
评论

相关推荐

    C和C++中的基本数据类型的大小及表示范围详解

    本文研究的主要问题时关于C和C++中的基本数据类型int、long、long long、float、double、char、string的大小及表示范围,具体介绍如下。 一、基本类型的大小及范围的总结(以下所讲都是默认在32位操作系统下): ...

    c++中的string常用函数用法总结

    我们尽可以把它看成是C++的基本数据类型。 好了,进入正题………首先,为了在我们的程序中使用string类型,我们必须包含头文件 &lt;string&gt;。 如下:#include &lt;string&gt; //注意这里不是string.h string.h是C字

    TypeScript和JavaScript的数据类型对比总结

    对比一下TypeScript和JavaScript中的数据类型(基本数据类型和引用数据类型) 一、先分别看一下ES5的基本数据类型和ES6新增基本数据类型 ES5的基本数据类型: String Number Boolean Null Undefined ES6新增基本数据...

    【Java面试+Java学习指南】 一份涵盖大部分Java程序员所需要掌握的核心知识

    Java基本数据类型 string和包装类 final关键字特性 Java类和包 抽象类和接口 代码块和代码执行顺序 Java自动拆箱装箱里隐藏的秘密 Java中的Class类和Object类 Java异常 解读Java中的回调 反射 泛型 枚举类 Java注解...

    java考试题大总结

    基本数据类型包括byte、int、char、long、float、double、boolean和short。 java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类 3、int 和 ...

    免费超全面的Java基础类型,容器,并发,IO流,面向对象,Web编程等代码总结

    基本数据类型,核心点整理 特殊的String类,以及相关扩展API 日期与时间API详解 流程控制语句,和算法应用 函数式编程概念和应用 集合容器 基于分析列表集合源码体系 基于分析地图集合源码体系 IO流机制 IO流核心...

    Android Activity之间的数据传递方法总结

    前言 在Activity间传递的数据一般比较简单,但是有时候实际开发中也会传一些比较复杂的数据,本节一起来学习更多Activity间数据的传递方法。 1、通过 Intent 传递 我们在进行 Activity ...String 不是基本数据类型,

    125条常见的java面试笔试题大汇总

     基本数据类型包括byte、int、char、long、float、double、boolean和short。  java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类 6、int...

    Java基础知识点总结.docx

    基本数据类型对象包装类★★★☆ 75 集合框架:★★★★★,用于存储数据的容器。 76 &lt; java.util &gt; Collection接口 77 &lt; java.util &gt;Iterator接口 78 &lt; java.util &gt;List接口 78 &lt; java.util &gt;Set接口 80 ...

    java面试试题总结

    java面试试题总结 String是最基本的数据类型吗? 基本数据类型包括byte、int、char、long、float、double、boolean和short。 

    JavaScript类型相关的常用操作总结

    ECMAScript中有5中简单数据类型(也称为基本数据类型): Undefined、Null、Boolean、Number和String。还有1中复杂的数据类型————Object,Object本质上是由一组无序的名值对组成的。 其中Undefined、Null、...

    java 面试题 总结

    基本数据类型包括byte、int、char、long、float、double、boolean和short。 java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类 3、int 和 ...

    JavaScript数据类型判定的总结笔记

    Javascript自带两套类型:基本数据类型(undefined,string,null,boolean,function,object)和对象类型。 但是如果尝试用typeof 来检测对象类型都一律返回”object”并不能加以区分 typeof null // object ...

    华为java经典面试题大总结

    2 String是最基本的数据类型吗? 3 int 和 Integer 有什么区别 4 String 和StringBuffer的区别 5 运行时异常与一般异常有何异同? 异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中...

    现代C++程序设计

    7.7 指针、引用和类 7.7.1 指针和引用实例 7.7.2 处理日期和时间的程序实例 7.8 总结 7.9 练习 复习题 第8章 继承和虚函数 8.1 为什么继承如此重要 8.1.1 IceCreamDialog实例 8.1.2 Counter类实例 8.2 继承基础 ...

    传智播客扫地僧视频讲义源码

    08_数据类型基础提高 09_数据类型引申和思考 10_变量本质剖析和内存四区模型引出_传智扫地僧 11_c的学习重理解到位_对初学者_传智扫地僧 12_直接通过内存标号操作内存空间_课堂答疑 13_中午课程回顾 14_内存四区基本...

    C#数据结构

    数据类型可分为两类:一类是非结构的原子类型,如C#语言中的基本类型 (整型、实型、字符型等);另一类是结构类型,它的成分可以由多个结构类型 组成,并可以分解。结构类型的成分可以是非结构的,也可以是结构的。...

    C#实训教程

    4.2 结构和类 75 4.3 调用函数的基类版本 76 4.4 抽象类和抽象函数 77 4.5 密封类和密封方法 79 4.6 修饰符 80 4.7 接口 81 4.8 内容总结 86 4.9 独立实践 86 5 委托与事件 88 5.1 事件的原理 88 5.2 简单的自定义...

    30天搞定Java–day2

    文章目录每日一考和复习基本语法关键字和保留字关键字保留字标识符变量基本数据类型基本数据类型变量间转换基本数据类型与String间转换进制与进制间转换总结: 每日一考和复习 每日一考题目及解答: JDK,JRE,JVM三者...

    Java之IO流学习总结

    根据处理数据类型的不同分为:字符流和字节流 根据数据流向不同分为:输入流和输出流 字符流和字节流 字符流的由来: 因为数据编码的不同,而有了对字符进行高效操作的流对象。本质其实就是基于字节流读取时,去查...

Global site tag (gtag.js) - Google Analytics