一、字符串常见的操作

1、结合我在python中对于字符串常见处理总结出下面三个应该能算是字符串造作的TOP 3

 //字符串查找子串,存在返回index,不存在返回-1 等于python的find:
String string = "abcdefg";
string.indexOf("cd"); //字符串的替换:
string = string.replace("old","new"); //字符串的拆分:
stringlist = string.split(",");
for(String each:stringlist){
System.out.println(each);
}

2、这里涉及一个常见的增强循环,有点类似于python中对可迭代对象的迭代

 for(数据类型 item:迭代对象){
do_something();
}

二、自实现数据

1、关于基本数组的概念,这里就不在赘述了,也没啥说的,这里主要想自己实现一个动态数组,结合python的list感觉就是一个实现动态数组的绝佳例子,而且也方便做队列和栈等。

可以实现append、extend、remove、iterator、切片、len等基本功能。如果想实现FIFO或者FILO类的数据结构(队列或栈)则继承之后实现push和pop等操作就好了。

 /*
* 目的:为了实现类似python的list的功能而定义这个数据结构
* 作者:陈然
* 版本:v0.1
* 声明:高度python爱好者
*/ /*引入包文件*/
import java.io.*;
import java.lang.*;
import java.util.Iterator;//为了实现增强循环引入迭代器 /*定义基础类myList的数据结构*/
class List implements Iterable<Object>{
/*我的仿Python的Java的ist数据结构*/
/*定义成员属性*/
protected Object[] array;//可以传入任意对象的list的存储空间
protected int size;//数组的元素数量 /*定义构造方法*/
List(){}
List(int size,Object[] object){
this.size = size;
this.array = new Object[object.length];
System.arraycopy(object, 0, this.array, 0, size);
}
/*定义成员方法*/
public boolean clear() {
//清空列表
try {
this.size = 0;
this.array = new Object[0];
return true;
}
catch(Exception reason){
return false;
}
} public int getSize() {
//返回列表长度
return this.size;
} public List getPices(int start,int end) throws Exception {
int length = 0;
boolean flag = false;
if(start >= 0 && end >=start) {
length = end-start;
}
else if(start < 0 && end <= start) {
length = start - end;
flag = true;
}
else {
throw new Exception("");
}
Object[] helper = new Object[length];
int fence = 0;
if(!flag) {
for(int i=start;i<end;i++) {
helper[fence] = this.array[i];
fence++;
}
}else {
for(int i=0;i<length;i++) {
helper[fence] = this.array[this.array.length-1-i];
fence++;
}
}
return new List(helper.length,helper);
} public boolean append(Object object) throws Exception{
try {
if(this.size == 0) {
try {
this.array = new Object[1];
this.array[0] = object;
this.size ++;
return true;
}
catch(Exception reason) {
return false;
}
}
else {
Object[] helper = new Object[this.size+1];
System.arraycopy(this.array, 0, helper, 0, this.array.length);
helper[this.size] = object;
this.array = new Object[helper.length];
System.arraycopy(helper, 0, this.array, 0, helper.length);
this.size++;
return true;
}
}
catch(Exception reason) {
return false;
}
} public boolean extend(Object[] exarray) throws Exception{
try {
if(this.size == 0) {
this.array = new Object[exarray.length];
System.arraycopy(exarray, 0, this.array, 0, exarray.length);
this.size = this.array.length;
return true;
}
else {
Object[] helper = new Object[this.size+exarray.length];
System.arraycopy(this.array, 0, helper, 0, this.size);
System.arraycopy(exarray, 0, helper, this.size, exarray.length);
this.array = new Object[helper.length];
System.arraycopy(helper, 0, this.array, 0, helper.length);
this.size += exarray.length;
return true;
}
}catch(Exception reason) {
return false;
}
} public boolean removeByIndex(int index) throws Exception {
if(index >= this.size) {
return false;
}
else {
try {
Object[] helper = new Object[this.size-1];
System.arraycopy(this.array, 0, helper, 0, index);
System.arraycopy(this.array, index+1, helper, index, helper.length-index);
this.array = new Object[helper.length];
System.arraycopy(helper, 0, this.array, 0, helper.length);
this.size --;
return true;
}catch(Exception reason) {
return false;
}
}
} public boolean removeByObject(Object object) throws Exception {
for(int i=0;i<this.size;i++) {
if(this.array[i] == object){
return this.removeByIndex(i);
}
}
return false;
} @Override
public Iterator<Object> iterator() {
//重载迭代器
return new Iterator<Object>() {
int cursor = 0;//索引下标 @Override
public boolean hasNext() {
return cursor < size;
} @Override
public Object next() {
return (Object)array[cursor++];
}
@Override
public void remove() {}
};
} }

知识点1:

 /*关于数组的拷贝*/
System.arraycopy(sarray,startindex,darray,startindex,copysize);

知识点2:

 /*异常处理*/
//对于函数定义时候抛出异常
public void function_name throws Exception(){} //代码块
try{
//...
}catch(Exception reason){
//...
} //抛出异常
throw new Exception("xxxxxx");

Java初学者笔记三:关于字符串和自实现数组常见操作以及异常处理的更多相关文章

  1. Java读书笔记三(字符串)

    1.介绍 本篇博客将对JAVA中的字符串类的基本知识进行介绍.主要字符串类的一些经常用法等内容. 2.字符串对象的创建 1.有两种形式.可是在开发中常常习惯于String 变量名的形式来进行操作. & ...

  2. Java初学者笔记

    Java初学者笔记 前提:认识汉字,认识英语单词,会用键盘打字 ------------------------------- 端口是什么: --------面向对象编程(OOP) 接口”(Inter ...

  3. Java 语言基础之数组常见操作

    对数组操作最基本的动作: 存和取 核心思想: 就是对角标的操作 数组常见操作: 1, 遍历 2, 获取最大值和最小值 3, 排序 4, 查找 5, 折半查找 // 1. 遍历 int[] arr = ...

  4. Java初学者最近三次作业的心得体会

    作为一个初学者,简单的谈一下自己的作业心得体会.如果你是完全没有接触过Java的学习,本篇博文可能会有些收获,如果你已经学习Java有一段时间了,那么可以放弃这篇文章了,因为这篇文章讲解的是基本的东西 ...

  5. Java学习笔记三.3

    9.异常处理:Java中的异常处理对象就是将以前的if语句进行的判断进行抽象化,并形成的一套错误处理体系.最顶端是Throwable,接着是Error,Exception,其中Exception又明显 ...

  6. Java开发笔记(一百二十四)AWT绘图操作

    前面介绍了如何使用画笔在控件上展示图像,可是图像来源于磁盘图片,无法即兴绘制个性化的图案.所幸画笔工具Graphics不仅能够描绘图像,还支持绘制常见的几何形状,也支持绘制文本字符串,除了绘制图像用到 ...

  7. Java初学者笔记六:反射

    Java反射基础 零.基础类代码 import java.io.*; import java.lang.reflect.*; class father{ public String fName; fa ...

  8. Java学习笔记三:Java的变量、常量、变量的类型及使用规则

    Java的变量.常量.变量的类型及使用规则 每一种语言都有一些具有特殊用途的词,Java也不例外,它们被称为关键字.关键字对 Java 的编译器有着特殊的意义. 一:Java中的关键字: 注:Java ...

  9. 类文件结构——深入理解Java虚拟机 笔记三

    在之前的笔记中记录过,Java程序变成可执行文件的步骤是:源代码-->经过编译变成class文件-->经过JVM虚拟机变成可执行的二进制文件.因此,为了对JVM执行程序的过程有一个好的了解 ...

随机推荐

  1. oracle数据库表空间的创建与使用

     以下操作请使用sys系统账号操作! 1. 查询物理存储的位置 SELECT tablespace_name, file_id, file_name, round(bytes / (1024 * 10 ...

  2. 常用shell命令实战

    #!/bin/sh ################### #### 环境变量 ### ################### #主程序目录 #APP_HOME=/apps/svr/apache-to ...

  3. Linux网络故障排查

    1.先排查网络配置信息 IP地址->子网掩码->网关->DNS 2.查看到达的网关是否连通 ping IP地址. 3.查看DNS解析是否正常.

  4. selenium测试(Java)--元素操作(五)

    元素的操作有 1. 清除文本 2. 模拟按键输入 3. 单击元素 4. 返回元素尺寸 5. 获取文本 6. 获取属性值 7. 判断是否可见 8. 提交 下面通过操作新浪邮箱的注册界面的脚本来展示使用方 ...

  5. ftp传输出现问题

    将文件打包压缩之后,从ftp服务器下载到本地,进行解压,出现下面的问题. 原来是传输文件的时候是默认按照netascii的格式进行传输的,没有按照二进制文件的形式传输. 再传输之前,使用bin指定传输 ...

  6. javax.naming.NoInitialContextException错误的解决方案

    今天,学习用了一下nutz框架,写了一个HelloWorld的小程序,在用jndi配置数据源时,写了一个测试类,并在main方法中调用了jndi获得数据库连接,但是报错了,错误信息如下: javax. ...

  7. CentOS开关机命令

    命令简介 shutdown,poweroff,reboot,halt,init都可以进行关机,大致用法. /sbin/halt     [-n] [-w] [-d] [-f] [-i] [-p] [- ...

  8. Z字形扫描矩阵

    问题描述 在图像编码的算法中,需要将一个给定的方形矩阵进行Z字形扫描(Zigzag Scan).给定一个n×n的矩阵,Z字形扫描的过程如下图所示: 对于下面的4×4的矩阵, 1 5 3 9 3 7 5 ...

  9. html dom基本操作

    //div出滚动条: <div id="discussion" style="height:500px;overflow:auto;"></d ...

  10. Unity3D使用经验总结 编辑器扩展篇【转】

    一个引擎,最重要的就是工具,工具除了提升开发速度,提供可视化操作环境以外,还带了容错功能. 它使得大家的工作局限在一定的范围内,比如一个变量的配置,或者是一些类型的选择. 使用编辑器,使得既使不太明白 ...