您的位置 首页 java

617、java类,对象,集合的介绍

617、java类,对象,集合的介绍

本章内容只做了解,与编写淘宝整站无关,目的是让学生理解现有计算机技术,希望同学们能革故鼎新,取其优,去其糟粕。

Java中没有json,需要用对象数组转json结构,徒耗计算机资源。如有json的原生支持,将提高互联网执行速度。

类的概念其实质是结构与函数的合体。有人赞誉之,有人诋毁之。在做互联网前后端分离应用时,更多的是用json字符串构成的结构。在前后端通讯时,也只能使用字符串进行前后端的勾连,网络光纤设备是不能理解类的结构的。为了学生能看懂其他人写的程序,本节讲讲类的概念。

思考目的 :如何把类构成的结构转换为json字符串,从而实现前后端交流呢?

教学视频地址:

教学素材下载地址:

知识点:

1、类的概念

2、实例化对象

3、重载

4、集合、数组

5、awt和util的区别

6、实例化集合

7、给集合添加对象

8、输出集合到前端

9、未完

10、下节介绍map数据类型

11、杂论

在前后端分离的情况下如何把数组类转换为字符串

1、类的概念:

定义

public class Student{

String id;

String name;

}

类形同于结构,表达复杂事物。

使用:需生成对象,实例化

Student stu1=new Student();

stu1.id=”1001″;

stu1.name=”吴楚淮”;

很不方便

学过结构体的会觉得很不方便,因其不能直接赋值,增加了劳动量,为了达到与结构体同样的赋值效果,需要额外添加2个构造函数,

构造函数与重载

public class Student{

String id;

String name;

//重载,两个函数名字一样,参数不一样。

Student(){

}

Student(String id,String name){

this.id=id;

this.name=name;

}

}

此时,可以同结构体一样使用

Student stu1=new Student();

stu1.id=”1001″;

stu1.name=”吴楚淮”;

Student stu2=new Student(“0002″,”黄嘉森”);

技术有适用范围,为了技术而盲目技术,不会带来好处,会增加工作量

2、Java中的集合(数组)

List数据类型

List是Java中比较常用的集合类,关于List接口有很多实现类,作为初学者可直接把它当做数组的概念,可直接忽略下面的介绍。

ArrayList、LinkedList和Vector之间的关系和区别。

617、java类,对象,集合的介绍

ArrayList底层是用数组实现的,可以认为ArrayList是一个可改变大小的数组。随着越来越多的元素被添加到ArrayList中,其规模是动态增加的。

LinkedList底层是通过双向链表实现的。所以,LinkedList和ArrayList之前的区别主要就是数组和链表的区别。

Vector和ArrayList一样,都是通过数组实现的,但是Vector是线程安全的。和ArrayList相比,其中的很多方法都通过同步(synchronized)处理来保证线程安全。

awt和util的区别

java.util包 ,包含集合框架,collection 类、事件模型、日期和时间设施、国际化和数组各种实用工具类(字符串标记生成器、随机数生成器和位数组)。

java.awt包,包含用于创建用户界面和绘制图形图像的所有类。awt是abstract window toolkit抽象窗口工具集的缩写,用来编写窗口应用程序(现在一般常用awt的事件系统,而窗口内容代码放到了javax.swing包中)。

eg:List集合应当导入import java.util.List包;但也存在import java.awt.List的包。

导包的时候要注意区分。

基于以上分析,线性数据库我们使用Arraylist结构,其实例化方法为:

List<Student> stus=new ArrayList<Student>();

其添加到集合的方法为:

stus.add(stu1);

stus.add(stu2);

输出集合到前端

Java中集合转换为json字符串,没有这样的方法,因此需要引用阿里巴巴的json操作库,

即使引用了json库,可实现转换,多了无意义的转换操作,加重了服务器负担。输出到前端需要转换为字符串类型。

//转换为字符串

String str=stus.toString();

//输出到控制台的系统函数

System.out.println(str);

//返回到浏览器端。

return str;

有思俱乐部也写了一套集合转json字符串的方法,原理很简单,字符串拼凑即可实现。

集合的用法

有了集合,我们就可以对集合进行循环,访问集合中的每个元素,对集合进行排序,查找,增加,删除等操作,就可以控制集合中的每一个元素。

//定义返回到前端的字符串变量

String _str=””;

//集合的使用,与数组相同,但提供了很多已经写好的方法

for(int i=0;i<stus.size();i++) {

//输出大禹1005的学号

if(stus.get(i).id.compareTo(“1005”)>0) {

//循环arraylist取其中一条数据的方法

_str=_str+stus.get(i).id;

}

}

源代码如下:

package cn.usestudio.controller;

import java.util.ArrayList;

import java.util.List;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.ResponseBody;

import org.springframework.web.bind.annotation.RestController;

import com.alibaba.fastjson.JSON;

//一定要添加此标识,否则找不到首页,报错

@RestController

public class DirectoryController {

//helloworld程序;

@RequestMapping(value = “/helloworld”)

public @ResponseBody String hello(){

//java不支持json数据类型,此处用字符串模拟json类型。在前端转换为json。

String z= “[{‘id’:’1001′,’name’:’张三’},”

+ “{‘id’:’1002′,’name’:’李四’},”

+ “{‘id’:’1003′,’name’:’王五’},”

+ “{‘id’:’1004′,’name’:’甘铁生’},”

+ “{‘id’:’1005′,’name’:’马继祖’},”

+ “{‘id’:’1006′,’name’:’章汉夫’},”

+ “{‘id’:’1007′,’name’:’黄强辉’},”

+ “{‘id’:’1008′,’name’:’马宏宇’},”

+ “{‘id’:’1009′,’name’:’谢大海’},”

+ “{‘id’:’1010′,’name’:’吕显祖’}”

+ “]”;

//类的实例化方法,默认实例化方法,可不申明,如添加了新的实例方法,则必须在类中显性申明此方法

Student stu1=new Student();

stu1.id=”1001″;

stu1.name=”张三”;

//类的实例化方法,需要编写相应构造函数

Student stu2=new Student(“0002″,”李四”);

Student stu3=new Student(“0003″,”王五”);

Student stu4=new Student(“0004″,”甘铁生”);

Student stu5=new Student(“0005″,”马继祖”);

Student stu6=new Student(“0006″,”章汉夫”);

Student stu7=new Student(“0007″,”黄强辉”);

Student stu8=new Student(“0008″,”马宏宇”);

Student stu9=new Student(“0009″,”谢大海”);

Student stu10=new Student(“0010″,”吕显祖”);

List<Student> stus=new ArrayList<Student>();

stus.add(stu1);

stus.add(stu2);

stus.add(stu3);

stus.add(stu4);

stus.add(stu5);

stus.add(stu6);

stus.add(stu7);

stus.add(stu8);

stus.add(stu9);

stus.add(stu10);

//java中没有集合转换为json的方法,因此需要引用阿里巴巴的json操作库,

//引用了json库,可实现转换,多了无意义的转换操作,加重了服务器负担。

//下节介绍map数据类型,同样是为学生的学习做铺垫,并不会用于项目中。

String str=stus.toString();

//定义返回到前端的字符串变量

String _str=””;

//集合的使用,与数组相同,但提供了很多已经写好的方法

for(int i=0;i<stus.size();i++) {

//输出大禹1005的学号

if(stus.get(i).id.compareTo(“1005”)>0) {

//循环arraylist取其中一条数据的方法

_str=_str+stus.get(i).id;

}

}

//输出到控制台的系统函数

System.out.println(_str);

//返回到浏览器端。

return _str;

}

public class Student{

String id;

String name;

//构造函数:函数名与类名相同。

//重载,两个函数名称相同,参数不同。

Student(){

}

Student(String id,String name){

this.id=id;

this.name=name;

}

}

}

未完

完了吗?没有,因为前端需要json结构,集合是复杂类型,还需要转换为json。由此看出,本节讲述的类的概念在实际项目中起到的是中转站的作用。如果后端能直接支持json,是否可节约计算机计算时间?有待各位学者努力,提出后端直接处理json的方法,既提高计算速度,又能让程序员不再兜兜转转,徒耗精力。

下节介绍map数据类型,同样是为学生的学习做铺垫,并不会用于项目中。

杂论

关于类和对象的作用

在互联网中的引用,此处有一段对话比较有意思。

在很多程序中,都喜欢定义一个private变量,然后为这个私有变量加上get(),set()方法。那为什么不直接定义一个public变量呢?这样做到底有什么好处和意义呢?难道真的仅仅只是为了代码规范?别逗了,不管你信不信,反正我是不信!带着这个问题我在网上寻找答案,真是众说纷纭啊,每个人都能说出一点点道理,但是却都不足以说服我!(所以在这里做一些总结,和大家分享,我们共同学习,共同进步。如果有什么想法和意见,也欢迎大家提出来,我们一起交流。)

其中看到有这样一种说法:   “get()和set()方法起到对外界封闭的作用,举个例子:假如你的裤兜里有很多钱,你肯定不会让别人都来掏,肯定只有自己能拿到,或者你拿出来给他,set和get就相当与你的手 而你类里的变量就相当与你兜里的钱,对于外面的人来说不知道你类里有什么他就知道调用这个get会给他一个什么东西”   

哇!貌似回答得很专业,很形象,很生动,很有道理啊,差一点我就要膜拜了,但是就在千钧一发的时刻,我冷静了下来。TNN的,差点就被你给忽悠了,这个举例完全没有回答实质性的问题嘛,会举例子的人伤不起啊~~(>_<)~~ 。如果一定要把get()和set()比喻成手的话,也不能比喻成你自己的手,因为get()和set()方法也是public属性的,谁都可以调用,也就是说任何人的手都还是可以拿到你的钱,那和直接把变量设成public有什么区别吗?至于对外面的人来说知不知道你类里有什么,这个只是变量命名规范问题而已,和属性不存在半毛钱关系吧?想让人看见和更改的变量就设成public,不想让人看见和更改的就设成privtata,已经很天衣无缝了,为什么还要get(),set()方法呢?   我又迷茫了,带着依依不舍的心情,我离开了这位大神,继续寻找答案。

结论,类是结构与函数的封装,便于团队协作,用传统的结构与函数完全可以达到相同目的,代码更精简。

大道至简,程序用不到而强行使用类和对象,只是照本宣科,不足道矣!

文章来源:智云一二三科技

文章标题:617、java类,对象,集合的介绍

文章地址:https://www.zhihuclub.com/169451.shtml

关于作者: 智云科技

热门文章

网站地图