/* 面试题
* 1:String,StringBuffer,StringBuilder的区别?
*
* String是内容不可变的,StringBuffer,StringBuilder都是内容可变的
* StringBuffer是同步的,数据安全,效率低,StringBuilder是不同步的,数据不安全,效率高
*
* 2:StringBuffer和数组的区别?
*
* 二者都可以看成是一个容器,装其他的数据
* 但是StringBuffer的数据最终是一个字符串数据
* 而数组可以放置多种数据,但必须是同一种数据类型的
*
* 3:形式参数问题
* String作为参数传递
* StringBuffer作为参数传递
*
* 形式参数:
* 基本类型:形式参数的改变不影响实际参数
* 引用类型:形式参数的改变直接影响实际参数
*
* 注意:
* String作为参数传递,效果和基本类型作为参数传递是一样的
*/

/* 面试题
* 1:String,StringBuffer,StringBuilder的区别?
*
* String是内容不可变的,StringBuffer,StringBuilder都是内容可变的
* StringBuffer是同步的,数据安全,效率低,StringBuilder是不同步的,数据不安全,效率高
*
* 2:StringBuffer和数组的区别?
*
* 二者都可以看成是一个容器,装其他的数据
* 但是StringBuffer的数据最终是一个字符串数据
* 而数组可以放置多种数据,但必须是同一种数据类型的
*
* 3:形式参数问题
* String作为参数传递
* StringBuffer作为参数传递
*
* 形式参数:
* 基本类型:形式参数的改变不影响实际参数
* 引用类型:形式参数的改变直接影响实际参数
*
* 注意:
* String作为参数传递,效果和基本类型作为参数传递是一样的
*/ public class StringTest { public static void main(String[] args) {
// TODO Auto-generated method stub String s1="hello";
String s2="world"; System.out.println(s1+"---"+s2);
change(s1,s2);
System.out.println(s1+"---"+s2); StringBuffer sb1=new StringBuffer("hello");
StringBuffer sb2=new StringBuffer("world"); System.out.println(sb1+"---"+sb2);
change(sb1,sb2);
System.out.println(sb1+"---"+sb2);
} private static void change(String s1, String s2) {
// TODO Auto-generated method stub
s1=s2;
s2=s1+s2;
} private static void change(StringBuffer sb1, StringBuffer sb2) {
// TODO Auto-generated method stub
sb1=sb2;
sb2.append(sb1);
}
}

面试题

字符串连接

public class Aserver {
public static void main(String args[]) {
// 字符串数据和其他数据+,结果是字符串类型
// 运算符重载+,字符串拼接
System.out.println("hello" + 'a' + 1);// helloa1
System.out.println('a' + 1 + "hello");// 98hello System.out.println("5+5=" + 5 + 5);// 5+5=55
System.out.println(5 + 5 + "=5+5");// 10=5+5
}
}

模拟用户登录

import java.util.Scanner;

public class StringTest {

	public static void main(String[] args) {
// TODO Auto-generated method stub int count = 3;
String username = "admin";
String password = "admin"; for (int i = 0; i < count; i++) {
Scanner sc = new Scanner(System.in); System.out.println("请输入用户名");
String name = sc.nextLine(); System.out.println("请输入密码");
String pwd = sc.nextLine(); if (name.equals(username) && pwd.equals(password)) {
System.out.println("登录成功");
break;
} else {
if (i == 2) {
System.out.println("账号被锁定,请与管理员联系。");
break;
}
System.out.println("登录失败,你还有" + (count - i - 1) + "次机会。");
}
}
}
}

例4.1小应用程序先声明一个数组a,在方法init()中创建它,指定有5个元素,然后为数组元素逐一赋值。在方法paint()中输出数组各元素的值。

import java.applet.*;
import java.awt.*; public class Example4_1 extends Applet {
int a[];// 标识符ua能引用元素类型是int的数组 public void init() {
a = new int[5];// 创建一个含5个元素的数组,并让a引用它
a[0] = 100;
a[1] = 101;
a[2] = 102;
a[3] = 103;
a[4] = 104;
} public void paint(Graphics g) {
g.drawString("a[0]=" + a[0] + " a[1]=" + a[1] + " a[2]=" + a[2], 12, 12);
g.drawString("a[3]=" + a[3] + " a[4]=" + a[4], 12, 32);
}
}

例4.2设明数组是一种引用类型的应用程序。

public class Example4_2 {
static public void main(String[] args) {
int firstArray[] = { 1, 2, 3, 4 };// 采用数组初始化创建数组
int secondArray[] = { 5, 6, 7, 8, 9, 10 };
int myArray[];// 声明标识符myArray可以引用数组
myArray = firstArray;// myArray与firstArray一样,引用同一个数组
System.out.println("First Array:");
for (int index = 0; index < myArray.length; index++) {
System.out.println(myArray[index]);// 通过myArray对数组做操作
}
myArray = secondArray;// 让myArray引用另一个数组
System.out.println("Second Array:");
for (int index = 0; index < myArray.length; index++) {
System.out.println(myArray[index]);// 通过myArray对数组做操作
}
}
}

例4.3一个含三角二维数组的应用程序。

public class Example4_3 {
static public void main(String[] args) {
boolean bTbl[][] = new boolean[4][];// 仅说明第一维,有4个子数组
for (int i = 0; i < bTbl.length; i++)// 创建第二维
{
bTbl[i] = new boolean[i + 1];
}
for (int i = 0; i < bTbl.length; i++)// 在屏幕上打印数组内容
{
for (int k = 0; k < bTbl[i].length; k++) {
System.out.print(bTbl[i][k] + " ");
}
System.out.println("");
}
}
}

例4.4一个说明字符串连接运算和连接方法的应用程序。

public class Example4_4 {
static public void main(String[] args) {
String s1 = "ABC";
String s2 = "DEFG";
System.out.println(s1 + s2);// 应用字符串连接运算
s1 = "ABC";
s2 = "XYZ";
s1 = s1.concat(s2);// 应用字符串连接方法
System.out.println(s1);
}
}

例4.5一个说明字符串的字符替换和去掉字符串前后空格的应用程序。

public class Example4_5 {
static public void main(String[] args) {
String s = "1234567788", str;
str = s.replace('7', 'A');
System.out.println("s=" + s + " str=" + str);
String s2 = " 123456 77 88 ", str2;
str2 = s2.trim();
System.out.println("s2=" + s2 + "| str2=" + str2 + "|");
}
}

例4.6利用StringTokenizer类分析字符串。

import java.util.*;

public class Example4_6 {
public static void main(String[] args) {
String s1 = "public static void, main";
String s2 = "StringTokenizer pas2? =new StringTokenizer";
StringTokenizer pas1 = new StringTokenizer(s1, " ,");// 空格逗号做分隔符
StringTokenizer pas2 = new StringTokenizer(s2, "? ");// 问号空格做分隔符
int n1 = pas1.countTokens(), n2 = pas2.countTokens();
System.out.println("s1有单词:" + n1 + "个,全部单词如下:");
while (pas1.hasMoreTokens()) {
String s = pas1.nextToken();
System.out.println(s);
}
System.out.println("s2有单词:" + n2 + "个,全部单词如下:");
while (pas2.hasMoreTokens()) {
String s = pas2.nextToken();
System.out.println(s);
}
}
}

例4.7一个说明字符串与字节数组的应用程序。

import java.util.*;

public class Example4_7 {
public static void main(String[] args) {
byte b[] = new byte[10];
for (int k = 0; k < 10; k++) {
b[k] = (byte) (k + 48);// 数字符0的ASCII码值是48
}
String s1 = new String(b);
String s2 = new String(b, 3, 6);
String s3 = new String("ABC");
String s4 = new String("Java程序");
byte c[] = s3.getBytes();
byte d[] = s4.getBytes();
System.out.println(s2);
System.out.println(s3);
System.out.println("数组c的长度是:" + c.length);
System.out.println("数组d的长度是(一个汉字占两个字节):" + d.length);
System.out.println("用ASCII数值输出数组c[]:");
for (int i = 0; i < c.length; i++) {
System.out.println("c" + "[" + i + "]:" + c[i]);
}
System.out.println("用ASCII数值对应的字符输出数组c[]:");
for (int i = 0; i < c.length; i++) {
System.out.println("c" + "[" + i + "]:" + (char) c[i]);
}
System.out.println("用ASCII数值输出数组d[]:");
for (int i = 0; i < d.length; i++) {
System.out.println("d" + "[" + i + "]:" + d[i]);
}
}
}

例4.8程序获取Date对象的小时、分和秒,获得Date对象的字符串表示,并测试一个循环所消耗的时间。

import java.util.*;

public class Example4_8 {
public static void main(String[] args) {
Date date1 = new Date();
System.out.println("日期及时间是:" + date1);
String t = date1.toString();
t = t.substring(11, t.indexOf('C'));// 截取时、分、秒部分。
System.out.println("现在时间是:" + t);
double sum = 0.0;
for (double i = 0; i < 80000000; i++) {
sum = sum + i;
}
System.out.println("" + sum);
Date date2 = new Date();// 循环结束后的时间。
t = date2.toString();
t = t.substring(11, t.indexOf('C'));// 字符C之前为时分秒
System.out.println("现在时间是:" + t);
}
}

04747_Java语言程序设计(一)_第4章_数组和字符串的更多相关文章

  1. Java语言程序设计(基础篇) 第七章 一维数组

    第七章 一维数组 7.2 数组的基础知识 1.一旦数组被创建,它的大小是固定的.使用一个数组引用变量,通过下标来访问数组中的元素. 2.数组是用来存储数据的集合,但是,通常我们会发现把数组看作一个存储 ...

  2. ArcGIS for Desktop入门教程_第七章_使用ArcGIS进行空间分析 - ArcGIS知乎-新一代ArcGIS问答社区

    原文:ArcGIS for Desktop入门教程_第七章_使用ArcGIS进行空间分析 - ArcGIS知乎-新一代ArcGIS问答社区 1 使用ArcGIS进行空间分析 1.1 GIS分析基础 G ...

  3. ArcGIS for Desktop入门教程_第六章_用ArcMap制作地图 - ArcGIS知乎-新一代ArcGIS问答社区

    原文:ArcGIS for Desktop入门教程_第六章_用ArcMap制作地图 - ArcGIS知乎-新一代ArcGIS问答社区 1 用ArcMap制作地图 作为ArcGIS for Deskto ...

  4. ArcGIS for Desktop入门教程_第四章_入门案例分析 - ArcGIS知乎-新一代ArcGIS问答社区

    原文:ArcGIS for Desktop入门教程_第四章_入门案例分析 - ArcGIS知乎-新一代ArcGIS问答社区 1 入门案例分析 在第一章里,我们已经对ArcGIS系列软件的体系结构有了一 ...

  5. 04747_Java语言程序设计(一)_第3章_面向对象编程基础

    链式编程 每次调用方法后,返回的是一个对象 /* * 链式编程 * 每次调用方法后,返回的是一个对象 */ class Student { public void study() { System.o ...

  6. 04747_Java语言程序设计(一)_第1章_Java语言基础

    二进制0b开头 八进制0开头 十六进制0x开头 package com.jacky; public class Aserver { public static void main(String arg ...

  7. 04747_Java语言程序设计(一)_第10章_网络与数据库编程基础

    例10.1说明InetAddress类的用法的应用程序. public class Example10_1 { public static void main(String args[]) { try ...

  8. 04747_Java语言程序设计(一)_第9章_输入和输出流

    例9.1一个文件复制应用程序,将某个文件的内容全部复制到另一个文件. import java.io.*; public class Example9_1 { public static void ma ...

  9. 04747_Java语言程序设计(一)_第8章_多线程

    例8.1应用程序用Thread子类实现多线程. import java.util.Date; public class Example8_1 { static Athread threadA; sta ...

  10. 04747_Java语言程序设计(一)_第7章_图形、图像与多媒体

    例7.1小应用程序用6种字型显示字符串,显示内容说明本身的字型. import java.applet.*; import java.awt.*; public class Example7_1 ex ...

随机推荐

  1. web前端代码规范——css代码规范

    Bootstrap CSS编码规范 语法 用两个空格来代替制表符(tab) -- 这是唯一能保证在所有环境下获得一致展现的方法. 为选择器分组时,将单独的选择器单独放在一行. 为了代码的易读性,在每个 ...

  2. Android项目中gen文件下R文件无法生成的解决的方法

    帮一个网友解决R文件无法生成的问题,搜集了些材料特整理例如以下,刚開始学习的人參考他人代码时极易出现此种问题,一般都是xml文件出错,无法被正确解析. gen文件夹无法更新,或者gen文件夹下的R.J ...

  3. Windows CMD命令之tasklist及taskkill

    Tasklist介绍 Tasklist"是 winxp/win2003/vista/win7/win8下的命令,用来显示运行在本地或远程计算机上的所有进程,带有多个执行参数. 使用格式 ta ...

  4. (转)javascript组件开发方式

    作为一名前端工程师,写组件的能力至关重要.虽然javascript经常被人嘲笑是个小玩具,但是在一代代大牛的前仆后继的努力下,渐渐的也摸索了一套组件的编写方式. 下面我们来谈谈,在现有的知识体系下,如 ...

  5. ubuntu中安装Docker

    系统要求: 必须时64位的系统,内核最低要求是3.10 查看系统内核: $ uname -r 3.11.0-15-generic 获取最新版本打Docker: $ wget -qO- https:// ...

  6. 使用DataReader

    string sqlStr="select * from tb_news"; SqlCommand myCmd=new SqlCommand(sqlStr,myConn); myC ...

  7. 《第一行代码》学习笔记12-UI(1)

    1.程序需要注销或者退出,用一个专门的集合类对所有的活动进行管理即可. 2.可视化编辑工具不利于真正了解界面背后的实现原理,通常这种方式制作的界面都不具有很好的屏幕适配性, 而且当需要编写较为复杂的界 ...

  8. hdu 1196

    Problem Description Given an positive integer A (1 <= A <= 100), output the lowest bit of A. F ...

  9. NDK编译Python2.7.5

    [背景] 网上有一些ndk编译python的做法,但按照教程做总是不成功,可能是环境版本不一样,导致很多地方的配置都不成功. 网上的教程大多只有做法,没有解释,即使按照教程编译成功,很多细节都不知道为 ...

  10. Java中list<Object>集合去重实例

    一:Java中list去重的方法很多,下面说一下其中一种方法:把list里的对象遍历一遍,用list.contain(),如果不存在就放入到另外一个list集合中: 二:实例 这里需要注意的是:使用c ...