一、字符串常见的操作

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. log4j日志pattern配置

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

  2. FTP内容

    1.1.1 作业FTP部署. FTP工具或者浏览器默认使用的都是PASV模式连接FTP服务器 1.先检查有没有安装   rpm -q vsftpd 如果没有安装   yum install vsftp ...

  3. 下载安装 Apache(Windows 64位)

    32位的Apache的下载安装:http://jingyan.baidu.com/album/2f9b480dae458f41cb6cc2ce.html?picindex=2 64位的Apache的下 ...

  4. 【转】优秀PMP项目经理必备的8个要素

    结合本人这几年在项目管理上的总结和得失,本人认为优秀的项目经理要有 责任心.要 善于沟通.能 引导客户.能 预测风险. 善于总结. 随需应变.善于 激励团队.同时也要 懂技术. 责任心 作为项目经理首 ...

  5. SAX与DOM解析XML的区别

    解析xml有四种方法:DOM,SAX,DOM4j,JDOM.     我们主要学了两种:DOM和SAX.     DOM适于解析比较简单的XML而SAX则适于解析较复杂的XML文件.各有各的好. DO ...

  6. Java JNI初探

    ---说明,之前直接百度出来的例子,照猫画虎.没想到的是这例子居然直接来自百度百科,写着写着就囧了.. ---anyway,写完了就当是给自己看吧. 同事求助,就看了一下,照猫画虎一番,略有所得. J ...

  7. 第三百一十节,Django框架,模板语言

    第三百一十节,Django框架,模板语言 模板语言就是可以将动态数据在html模板渲染的语言 一.接收值渲染 locals()函数,写在请求响应render()函数里,可以将逻辑处理函数里的变量传到h ...

  8. 单例模式/ java实现附代码 /

    注: 场景和例子出自github的设计模式.传送门:https://github.com/iluwatar/java-design-patterns/tree/master/singleton 意图: ...

  9. (转)typedef 函数指针的用法

    typedef 函数指针的用法   在网上搜索函数指针,看到一个例子.开始没看懂,想放弃,可是转念一想,这个用法迟早要弄懂的,现在多花点时间看懂它,好过以后碰到了要再花一倍时间来弄懂它.其实很多时候都 ...

  10. Kubernetes1.1源码分析(二)

    3.controller-manager模块 在controller manager模块中有几个重要的结构体.当中包含EndpointController.ReplicationManager.GCC ...