零、绪论:

  2018年新年伊始,学习Java的冲动越来越强烈,毕竟以后无论是做安全开发还是安全研究都必不可少的掌握这门语言,所以在不断完善Python作为脚本语言的主语言的情况下觉得学习Java作为高级语言当中的主语言(无奈C、C++指针太虐人,内存太虐人,还是被JVM屏蔽了的好,虽然后面的也得看)所以觉得写一个学习系列的Java博客,作为学习笔记。希望能非常基础的但也完整的记录自己学习Java的一点一滴,备忘同时提升。本系列的后续篇章不再像WEB安全系列那样每一篇都把绪论作为开头了,先写下来作为开篇吧。由于大学期间学习过Java最基础的,而且具备一点点C\C++的阅读代码能力,所以想hello world啊,环境配置就不写了。

一、Object类:

  在java中Object是所有类的基类,蛮类似python中的新式类的,哈哈。对于Object的定义的参数,你传入什么类型的动心这个参数变量就是什么类型的,这样就解决了一个数据结构中保存不同类型对象的问题。

例如,我要搞一个数组{"a",1,c} c是一个类的实例对象,那么该如何定义这个数组呢?

 Object[] objlist = new Object[10];

你对Object参数传参后类型就是你传入的类型,如下是我模仿python字典的一些基本操作,用java实现的一个数据结构:

节点类:

 class dictnode{
private Object key;
private Object value;
dictnode(Object keyname,Object valueitem){
this.key = keyname;
this.value = valueitem;
}
protected void finalize() {}
public Object getValue() {
return this.value;
}
public void setValue(Object value) {
this.value = value;
}
public Object getKey() {
return this.key;
}
}

字典类:

 class dict{
private int max;
private int size = 0;
private dictnode[] nodelist;
dict(int max){
this.max = max;
nodelist = new dictnode[max];
}
public boolean set(Object key,Object value) throws Exception {
if(this.size <= this.max-1 ) {
for(int flag=0;flag<this.size;flag++) {
if (nodelist[flag].getKey() == key) {
nodelist[flag].setValue(value);
return true;
}
}
nodelist[this.size] = new dictnode(key,value);
this.size++;
return false;
}
else {
throw new Exception("字典已经满额");
}
}
public Object get(Object key) throws Exception {
for(int flag=0;flag<this.size;flag++) {
if (nodelist[flag].getKey() == key) {
return nodelist[flag].getValue();
}
}
throw new Exception("未找到该键值");
}
public int getSize() {
return this.size;
}
public void clear() {
for(int flag=0;flag<this.size;flag++) {
this.nodelist[flag] = null;
}
this.size = 0;
}
public boolean hasKeys(Object key) {
for(int flag=0;flag<this.size;flag++) {
if (this.nodelist[flag].getKey() == key) {
return true;
}
}
return false;
}
public dictnode[] items() {
return this.nodelist;
}
public Object[] keys() {
Object[] keylist= new Object[this.size];
for(int flag=0;flag<this.size;flag++) {
keylist[flag] = this.nodelist[flag].getKey();
//System.out.println(keylist[flag]);
}
return keylist;
}
public Object[] values() {
Object[] valuelist= new Object[this.size];
for(int flag=0;flag<this.size;flag++) {
valuelist[flag] = this.nodelist[flag].getValue();
}
return valuelist;
}
}

对于Object类型参数,我传入一个{“1”:2},那么节点中的Object参数value的getClass()就变成了你还:

class java.lang.Integer

如上,我们可以通过Object数据类型来构造范式的数据结构。

特殊的类型枚举类

我们来看一个定义:

class student{
public String Name;
enum gendertype{MALE,FEMALE}
public gendertype Gender;
public String StudentID;
public int Age;
public String Level;
private double AveryScore; public student(String name,int gender,String studentid,int age,String level) {
this.Name = name;
if(gender == 0){
this.Gender = Gender.MALE;
}
else {
this.Gender = Gender.FEMALE;
}
this.StudentID = studentid;
this.Age = age;
this.Level = level;
this.AveryScore = 0.00;
}
public double getStudentAveryScore() {
return this.AveryScore;
}
public void setStudentAveryScore(double averscore) {
this.AveryScore = averscore;
}
public void show() {
String infostr = "学号:"+this.StudentID+"姓名:"+this.Name+" 性别:"+this.Gender+" 年龄:"+String.valueOf(this.Age)+" 年级:"+this.Level;
System.out.println(infostr);
}
}

我们来看枚举类的定义方法:

 enum gendertype{MALE,FEMALE}
public gendertype Gender; //调用的时候
if(gender == 0){
this.Gender = Gender.MALE;
}
else {
this.Gender = Gender.FEMALE;
}

Java初学者笔记一:元类、获取类型、枚举的更多相关文章

  1. Java初学者笔记

    Java初学者笔记 前提:认识汉字,认识英语单词,会用键盘打字 ------------------------------- 端口是什么: --------面向对象编程(OOP) 接口”(Inter ...

  2. 【原】Java学习笔记031 - 常用类

    package cn.temptation; public class Sample01 { public static void main(String[] args) { /* * 类 Math: ...

  3. Java初学者笔记六:反射

    Java反射基础 零.基础类代码 import java.io.*; import java.lang.reflect.*; class father{ public String fName; fa ...

  4. java学习笔记7--抽象类与抽象方法

    接着前面的学习: java学习笔记6--类的继承.Object类 java学习笔记5--类的方法 java学习笔记4--类与对象的基本概念(2) java学习笔记3--类与对象的基本概念(1) jav ...

  5. 1.9(java学习笔记)object类及toString()与equals()方法

    object类 java中objec是所有类公共的父类,一个类只要没有明显的继承某一类,那么它就是继承object类. 例如 class Person {......};和class Person e ...

  6. Java学习笔记day06_自定义类_ArrayList

    1.自定义类class 使用类的形式, 对现实中的事物进行描述. 类是引用数据类型. 事物: 方法,变量. 方法:事物具备的功能. 变量:事物的属性. 格式: public class 类名{ //属 ...

  7. 面向对象相关概念与在python中的面向对象知识(魔法方法+反射+元类+鸭子类型)

    面向对象知识 封装 封装的原理是,其成员变量代表对象的属性,方法代表这个对象的动作真正的封装是,经过深入的思考,做出良好的抽象(设计属性时用到),给出“完整且最小”的接口,并使得内部细节可以对外透明( ...

  8. Java学习笔记(2)——有关类

    Java类的高级特性: {Java管理文件机制:类包. 同一个包中的类互相访问时,可以不指定包名. 同一个包中的类不必存放在同一位置,如com.lang.class1和com.lang.class2可 ...

  9. 廖雪峰Python学习笔记——使用元类

    元类(MetaClasses) 元类提供了一个改变Python类行为的有效方式. 元类的定义是“一个类的类”.任何实例是它自己的类都是元类. class demo(object): pass obj ...

随机推荐

  1. 官网下载到离线的Adobe Acrobat Reader DC

    Adobe 官方 FTP :ftp://ftp.adobe.com/ Adobe Acrobat Reader DC 下载目录:ftp://ftp.adobe.com/pub/adobe/reader ...

  2. hive输出json字符串

    目前没发现有什么方便的函数可以直接使用,只能使用concat来手工拼接. 注意将null的字段值转为空,使用nvl函数 如果将hql语句写在script.q文件里面如下: select concat( ...

  3. 轻松学习之Linux教程二 一览纵山小:Linux操作系统具体解释

    本系列文章由@uid=hpw" style="padding:0px; margin:0px; color:rgb(255,0,0); text-decoration:none&q ...

  4. flv网页视频播放

    今天需要用到网页视频播放功能,找了一下,发现flowplayer很好用,写了个dome需要的同学,去下载咯 http://download.csdn.net/detail/jine515073/770 ...

  5. Spring Session + Redis实现分布式Session共享

    发表于 2016-09-29 文章目录 1. Maven依赖 2. 配置Filter 3. Spring配置文件 4. 解决Redis云服务Unable to configure Redis to k ...

  6. ubuntu下 apache phpmyadmin 的安装和使用

    // Apache //Task: Start Apache 2 Server /启动apache服务 # /etc/init.d/apache2 start //or $ sudo /etc/ini ...

  7. node-webkit连接mysql

    一.安装node.js mysql驱动库 node-webkit里面没有mysql模块的,我们需要安装mysql模块.我们可以使用npm(Node package manager)进行安装.这里使用到 ...

  8. JetBrains PyCharm 4.0.4 key

    用户名 yueting3527 注册码 ===== LICENSE BEGIN ===== 93347-12042010 00001FMHemWIs"6wozMZnat3IgXKXJ 2!n ...

  9. jQuery EasyUI教程之datagrid应用

    一.利用jQuery EasyUI的DataGrid创建CRUD应用 对网页应用程序来说,正确采集和管理数据通常很有必要,DataGrid的CRUD功能允许我们创建页面来列表显示和编辑数据库记录.本教 ...

  10. 【好文收藏】javascript中event对象详解

    event代表事件的状态,例如触发event对象的元素.鼠标的位置及状态.按下的键等等. event对象只在事件发生的过程中才有效. event的某些属性只对特定的事件有意义.比如,fromEleme ...