Java初学者笔记三:关于字符串和自实现数组常见操作以及异常处理
一、字符串常见的操作
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初学者笔记三:关于字符串和自实现数组常见操作以及异常处理的更多相关文章
- Java读书笔记三(字符串)
1.介绍 本篇博客将对JAVA中的字符串类的基本知识进行介绍.主要字符串类的一些经常用法等内容. 2.字符串对象的创建 1.有两种形式.可是在开发中常常习惯于String 变量名的形式来进行操作. & ...
- Java初学者笔记
Java初学者笔记 前提:认识汉字,认识英语单词,会用键盘打字 ------------------------------- 端口是什么: --------面向对象编程(OOP) 接口”(Inter ...
- Java 语言基础之数组常见操作
对数组操作最基本的动作: 存和取 核心思想: 就是对角标的操作 数组常见操作: 1, 遍历 2, 获取最大值和最小值 3, 排序 4, 查找 5, 折半查找 // 1. 遍历 int[] arr = ...
- Java初学者最近三次作业的心得体会
作为一个初学者,简单的谈一下自己的作业心得体会.如果你是完全没有接触过Java的学习,本篇博文可能会有些收获,如果你已经学习Java有一段时间了,那么可以放弃这篇文章了,因为这篇文章讲解的是基本的东西 ...
- Java学习笔记三.3
9.异常处理:Java中的异常处理对象就是将以前的if语句进行的判断进行抽象化,并形成的一套错误处理体系.最顶端是Throwable,接着是Error,Exception,其中Exception又明显 ...
- Java开发笔记(一百二十四)AWT绘图操作
前面介绍了如何使用画笔在控件上展示图像,可是图像来源于磁盘图片,无法即兴绘制个性化的图案.所幸画笔工具Graphics不仅能够描绘图像,还支持绘制常见的几何形状,也支持绘制文本字符串,除了绘制图像用到 ...
- Java初学者笔记六:反射
Java反射基础 零.基础类代码 import java.io.*; import java.lang.reflect.*; class father{ public String fName; fa ...
- Java学习笔记三:Java的变量、常量、变量的类型及使用规则
Java的变量.常量.变量的类型及使用规则 每一种语言都有一些具有特殊用途的词,Java也不例外,它们被称为关键字.关键字对 Java 的编译器有着特殊的意义. 一:Java中的关键字: 注:Java ...
- 类文件结构——深入理解Java虚拟机 笔记三
在之前的笔记中记录过,Java程序变成可执行文件的步骤是:源代码-->经过编译变成class文件-->经过JVM虚拟机变成可执行的二进制文件.因此,为了对JVM执行程序的过程有一个好的了解 ...
随机推荐
- zip文件内存中解压读取
// 构造zip输入流 ZipInputStream zip = new ZipInputStream(fis,Charset.forName("gbk")); byte[] tm ...
- 【转】nginx中proxy_set_header Host $host的作用
nginx为了实现反向代理的需求而增加了一个ngx_http_proxy_module模块.其中proxy_set_header指令就是该模块需要读取的配置文件.在这里,所有设置的值的含义和http请 ...
- C++中前置声明的应用与陷阱
前置声明的使用 有一定C++开发经验的朋友可能会遇到这样的场景:两个类A与B是强耦合关系,类A要引用B的对象,类B也要引用类A的对象.好的,不难,我的第一直觉让我写出这样的代码: // A.h #in ...
- 【转】【OPenGL】OPenGL 画图板-- 中点算法画圆
为了能以任意点为圆心画圆,我们可以把圆心先设为视点(相当于于将其平移到坐标原点),然后通过中点法扫描转换后,再恢复原来的视点(相当于将圆心平移回原来的位置). 圆心位于原点的圆有四条对称轴x=0,y= ...
- C# 窗体显示避免抢夺焦点
通过调用API进行显示可以避免抢夺焦点的问题 以下是API调用 using System.Runtime.InteropServices; [DllImport("user32.dll&qu ...
- int、long、longlong、float、double、long double的范围
- e645. 处理键盘事件
You can get the key that was pressed either as a key character (which is a Unicode character) or as ...
- 【Java面试题】40 你所知道的集合类都有哪些?主要方法?
线性表,链表,哈希表是常用的数据结构,在进行Java开发时,JDK已经为我们提供了一系列相应的类来实现基本的数据结构.这些类均在java.util包中.本文试图通过简单的描述,向读者阐述各个类的作用以 ...
- 使用C#压缩解压rar和zip格式文件
为了便于文件在网络中的传输和保存,通常将文件进行压缩操作,常用的压缩格式有rar.zip和7z,本文将介绍在C#中如何对这几种类型的文件进行压缩和解压,并提供一些在C#中解压缩文件的开源库. 在C#. ...
- jquery.attach附件上传jquery插件
html: <!DOCTYPE html> <html lang="zh-cn"> <head> <meta http-equiv=&qu ...