一、字符串常见的操作

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. 打开wps的宏设置,提示你可能没有装vba

    打开wps的宏设置,提示你可能没有装vba?? 因为wps个人版没有vba,安装以下软件即可,亲测可行 VBA6.3提取自WPS2012专业增强版.zip   链接: http://pan.baidu ...

  2. log4j日志pattern配置

    c category的名称,可使用{n}限制输出的精度.例如:logger名为"a.b.c",%c{2}将输出"b.c". C 产生log事件的java完全限定 ...

  3. HDFS入门

    HDFS入门 欢迎关注我的个人博客:http://www.cnblogs.com/yjd_hycf_space 更多大数据以及编程相关的精彩文章 为什么我们需要HDFS 文件系统由三部分组成:与文件管 ...

  4. rufus/scheduler

    之前先在initializers 文件夹下建立了一个task.rb ,rails服务启动的时候执行,本地没问题,可是服务器上启动了3个进程,会执行3遍,解决方法是 把task.rb 放到 script ...

  5. USB2.0学习笔记连载(三):通用USB驱动程序解析

    对于USB驱动的开发,读者可以使用Windows DDK.DriverStudio等多种开发工具来实现USB的驱动,但是驱动程序的开发过程都比较复杂,而且很容易致使USB主机内存泄露而死机.那么对于笔 ...

  6. Intellij IDEA Module 的Language Level的问题

    最近从github上fork了张开涛的Shiro代码,IDE是Intellij IDEA.发现无论是Project还是Module,默认的Language Level都是JDK 1.5,而且每次修改都 ...

  7. iOS多线程与网络开发之NSOperation

    郝萌主倾心贡献,尊重作者的劳动成果,请勿转载. 假设文章对您有所帮助,欢迎给作者捐赠,支持郝萌主,捐赠数额任意,重在心意^_^ 我要捐赠: 点击捐赠 Cocos2d-X源代码下载:点我传送 游戏官方下 ...

  8. R语言低级绘图函数-rect

    rect 函数用来在一张图上添加矩形,只需要指定左下角和右上角的坐标的位置,就可以画出一个矩形 基本用法: plot(1:5, 1:5, xlim = c(0,6), ylim = c (0,6), ...

  9. 利用PHPExcel导出Excel相关设置

    功能包括: 1.设置单元格格式,包括单元格边框.单元格高度.单元格宽度 2.合并指定的单元格 3.设置Excel数据源,并将数据源保护起来(这个是为了实现单元格下拉选项功能) 4.设置字体样式 pub ...

  10. iOS 图片切片的简单实现

    图片切片就是将一张图片按一定比例切分,中间部分系统自动填充空白, 这样在文本多行输入的时候,将具有特定形状的图片作为背景, 即使文本行数很多,也不会使图片走形. //即使你按5/5分,还是3/7分系统 ...