引言:
我决定把课程分为五个板块,现在来介绍一下这些板块都会说些什么。第一个板块当然是介绍结构化程序设计的内容,但是不会很详细,最好有C语言或者C++基础,因为我只会重点说一些部分。第二个板块就是面向对象程序设计,也是重点讲解一些关系。第三个板块介绍特殊的结构:数组、字符串、向量,哈希表,泛型和枚举。第四个部分就是异常处理和文件数据流操作。第五个部分会讲解一些swing图形用户界面程序设计和介绍编程规范。课程很水,有一些有帮助,有一些没有帮助,那么就择优一起学习吧,如有错误,评论指出哦。
讲解第三个大板块:
三、数组、字符串、向量、哈希表、泛型和枚举
1、数组
无论是一维数组亦或是二维数组,还是其它的多维数组,都是和C语言C++的一致,所以这里给出一个简单的例子,其中chengji数组里面的值可以创建Scanner对象输入,也可以直接赋予直接量。
public void MaoPaoSort() {
int chengji[]= {math,english,PE,MaoGai,Java,suanfa};
String s[] = {"数学","英语","体育","毛概","JAVA","算法"};
for(int i=0;i<6;i++)
for(int j=1;j<5;j++)
{
int t;
if(chengji[i]<chengji[j])
t = chengji[i];
chengji[i] = chengji[j];
chengji[j] = t;
}
System.out.println("结果为:");
for(int i=0;i<6;i++)
{
System.out.println(s[i]+":"+chengji[i]);
}
}
(补充)数组默认初始化值其实都可以看做是0,整型数据都是0,浮点型为0.0,char型也是0,但是它是ASCALL中的0,string为null,boolean为false。
它们在内存中一个简单的结构就是通过地址来连接的,简单的JVM就有栈区、堆区、方法区(常量池、静态域),一般都是栈区通过地址连接到堆区或方法区里面存储的数据,并且数组名就是首地址(这个和C语言是一致的)。
2、字符串
这里的字符串对象就比之前的C语言要灵活得多,里面有多种方法都非常的好用,如果你在IDLE里面编写代码,那么ctrl+F1可以帮助你认识很多的方法,而且集成编辑器也会弹出很多的String方法。我这里介绍一下比较少见的几个。
字符串转换为的类型 | 方法 |
转换为字符类型 | String.charAt |
转换为布尔类型 | public static boolean parseBoolean(String s) |
转换为字节类型 | public static byte parseByte(String s) throws NumberFormatException |
转换为整型 | public static int parseInt(String s) throws NumberFormatException |
转换为字节数组 | public byte[] getBytes() |
转换为字符数组 | public char[] toCharArray() |
3、字符串缓冲区
我们都知道字符串实例对象一旦创建完毕,就不能再修改它的字符序列,而字符序列缓冲区实例对象在创建后仍然可以修改它的字符序列。下面给出一个实例
public class StringBuffer
{
public static void main(String args[])
{
StringBuffer b = new StringBuffer("0123");
System.out.println("字符串缓冲区的字符序列为\""+b+"\"");
System.out.println("字符串缓冲区的长度是"+b.length());
System.out.println("字符串缓冲区的容量是"+b.capacity());
b.ensureCapacity(25);
System.out.println();
System.out.println("在调用\"b.ensureCapacity(25)\"之后");
System.out.println("字符串缓冲区的字符序列为\""+b+"\"");
System.out.println("字符串缓冲区的长度是"+b.length());
System.out.println("字符串缓冲区的容量是"+b.capacity());
}
}
结果:
我们可以看到,缓冲区容量不够,所以就变成了2*2+2
4、向量
由于向量在之后的练习中是不常用的,所以这个想知道就可以自己了解。
5、哈希表
哈希表的原理也就是数据结构中提到了散列函数,哈希表有一个好处就是键值对的关系很明确,上面的成绩函数就可以用哈希表来完成,代码在我java专栏的第二个java程序里面有。
6、泛型
这里的泛型可以类比为C++里面的模板,我们来看看实例就知道了。
public class Add<T>
{
public String sum(T a1,T a2,T a3)
{
return(a1.toString()+a2.toString()+a3.toString());
}
public static void main(String args[])
{
Add<Integer> b = new Add<Integer>();
Integer a1 = new Integer(1);
Integer a1 = new Integer(2);
Integer a1 = new Integer(3);
System.out.println(b.sum(a1,a2,a3));
}
}
输出结果就是123,如果要相加,那么就把整型对象用intValue方法转换。
7、枚举
个人觉得枚举的作用类似于结构体,但是显然结构体要高级一些。
实例:
enum SEASON
{
春,夏,秋,冬
}
public class Enum
{
public static void main(String args[])
{
SEASON[] sa = SEASON.values();
for(int i=0;i<sa.length;i++)
{
switch(sa[i])
{
case 春:
System.out.println("春天来了");
break;
case 夏:
System.out.println("夏天来了");
break;
case 秋:
System.out.println("秋天来了");
break;
case 冬:
System.out.println("冬天来了");
break;
}
}
}
}
后记:
那么之后就是异常与文件处理部分了,冲啊,如有误,评论指出,谢谢。