java之自定义数据类型

Posted 磊哥的Java历险记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java之自定义数据类型相关的知识,希望对你有一定的参考价值。

前言:

我们上一篇讲了java基础之方法,今天我们聊一下自定义数据类型,和大家提前聊一下,等到后面我们聊到面向对象的时候会讲到自定义数据类型的升级版,因为我们后面几篇文章需要用到,所以必须和兄弟们提前聊一下。

我的每篇文章都是按照概念,格式,代码,演示这种风格去走的,我自己认为这种排版的文章大家看起来比较方便,结构也比较清晰,也希望我的文章能给兄弟们带来一定帮助

java之自定义数据类型_java

一.介绍

    敲个黑板,这里我们介绍的自定义数据类型就是定义我们JAVA中的类,类是我们JAVA编程的基本的单位,写好了类,就相当于学好JAVA的基本构成

二.知识点介绍

    1、概述

    2、类的定义及使用

三.知识点详解

1、自定义数据类型概述

    任何编程语言都需要将现实生活中的事物抽象成代码。这时可以使用自定义的数据类型(类)来描述(映射)现实事物。

    类就是数据类型,与之前学习的所有引用数据类型相同,自定义类也是一种数据类型。只是自定义类型并非Java为我们预先提供好的类型,而是我们自己定义的一种引用数据类型用来描述一个事物。

2、类的定义及使用

2.1、类的定义格式及使用格式

    代码映射现实事物的过程就是定义类的过程。每个成员变量与要描述的事物属性变量名对应,数据类型对应。

    这时,我们便可以将一个事物的多个属性值组织成一个完整的事物作为操作单位。

2.1.1、类的定义格式

    创建文件,与类名相同

public class 类名
数据类型 属性名称;
数据类型 属性名称2;

    代码演示:
package com.Test;

/*
自定义数据类型 Person

个人属性
姓名 String
年龄 int
性别 String
爱好 String
身高 double
是否喜欢java boolean

创建文件,与类名相同
public class 类名
数据类型 属性名称;
数据类型 属性名称2;


*/
public class Person

//姓名
String name;

//年龄
int age;

//性别
String sex;

//爱好
String hobby;

//身高
double height;

//是否喜欢java
boolean isLoveJava;

2.1.2、类的使用格式

    类在定义出来之后,必须被使用,不使用虽然没有语法错误,但是没有意义。

    自定义类的使用方式与以往的引用数据类型完全相同,如下:

 (1)导包:

我们将所有的类放到同一个文件夹下,可以避免导包。

 (2)创建对象:

数据类型  变量名 =new 数据类型();

 (3)调用方法: 

由于我们定义的类型并不完整,所以现在不涉及调用方法,而是访问属性访问属性:对象名. 属性名 (这是当前的方式,后期会采取调 用方法的方式替代掉直接访问的方式来完成对属性的访问。)

   代码演示:
package com.Test;


/* 导包:我们将所有的类放到同一个文件夹下,可以避免导包。
创建对象:数据类型 变量名 =new 数据类型();
调用方法: 由于我们定义的类型并不完整,所以现在不涉及调用方法,而是访问属性访问属性:对象名. 属性名
*/
public class Main

private final static String name = "磊哥的java历险记-@51博客";
public static void main(String[] args)
//创建对象
Person person = new Person();
//对象调属性年龄,赋值
person.age = 25;
//对象调属性爱好,赋值
person.hobby="逛51OTC博客";
//对象调属性名字,赋值
person.name="磊哥java历险记";
System.out.println("姓名:"+person.name);
System.out.println("爱好:"+person.hobby);
System.out.println("年龄:"+person.age);
System.out.println("============="+name+"=============");

java之自定义数据类型_自定义类型_02

2.2、 自定义类型实练

    我们可以将现实生活中的任何事物抽象成一个类,自定义并使用一种数据类型。如人类、动物类、汽车类、衣服类、玩具类等。

代码示例:
package com.Test;

/*
自定义类型 人类
属性
姓名 String
年龄 int
性别 String
身高 double
是否热爱java boolean
爱好 String
*/

public class Person

//姓名
String name;
//年龄
int age;
//性别
String sex;
//身高
double height;
//是否喜欢java
boolean isLoveJava;
//爱好
String hobby;
package com.Test;
/* 导包:我们将所有的类放到同一个文件夹下,可以避免导包。
创建对象:数据类型 变量名 =new 数据类型();
调用方法: 由于我们定义的类型并不完整,所以现在不涉及调用方法,而是访问属性访问属性:对象名. 属性名
*/
public class Main

private final static String name = "磊哥的java历险记-@51博客";
/*
测试自定义类型 Person类
注意事项
自定义类就是引用数据类型 每个对象的属性都有默认值
static修饰的方法 只能调用static修饰的方法或成员变量
指的是
在同一个类中直接访问时,必须使用static修饰
如果通过对象名.方法名 或者 对象名.属性名的方式访问 不需要static饰
*/
public static void main(String[] args)
Person p = new Person();
p.name = "磊哥java历险记";
p.age= 25;
p.sex= "男";
p.height= 1.85;
p.isLoveJava= true;
p.hobby= "逛51OTC博客";
System.out.println("姓名:"+p.name);
System.out.println("年龄:"+p.age);
System.out.println("性别:"+p.sex);
System.out.println("身高:"+p.height);
System.out.println("是否喜欢java:"+p.isLoveJava);
System.out.println("============="+name+"=============");
Person p2 = new Person();
System.out.println(p2);
System.out.println(p2.name);
System.out.println("年龄:"+p2.age);
System.out.println("性别:"+p2.sex);
System.out.println("身高:"+p2.height);
System.out.println("是否喜欢java:"+p2.isLoveJava);

java之自定义数据类型_java_03

自定义并使用商品类:

package com.Test;
/*
创建对象:数据类型 变量名 =new 数据类型();
调用方法: 由于我们定义的类型并不完整,所以现在不涉及调用方法,而是访问属性访问属性:对象名. 属性名
*/
public class Main

private final static String name = "磊哥的java历险记-@51博客";

/*
自定义数据类型 商品类

商品属性

商品编号 String
商品名称 String
商品单价 double
商品数量 int
商品金额 double
创建文件,与类名相同
public class 类名
数据类型 属性名称;
数据类型 属性名称2;


一个文件中可以有多个类,但只能有一个public的类,
并且public的类名必须与文件名相一致
*/
public static class GoodsItem

//商品编号
String id;
//商品名称
String name;
//商品单价
double price;
//商品数量
int number;
//库存总价值
double totalmoney;


/*
测试类 测试自定义类型商品类
导包 测试类 与 被测试类在同一个文件夹下 不需要导包
创建对象 数据类型 变量名 =new 数据类型();
调用方法 没有方法不调用
访问属性
变量名.属性名 获取值/赋值
*/
public static void main(String[] args)
GoodsItem gs = new GoodsItem();
gs.id = "01";
gs.name= "PS5游戏机";
gs.price= 2550;
gs.number= 22;
//计算库存总价值
gs.totalmoney=gs.price * gs.number;
//商品id,赋值给id
String id=gs.id;
System.out.println("商品id:"+id);
//输出库存总价值
System.out.println("商品库存总价值:"+gs.totalmoney);
//输出商品单价
System.out.println("商品单价"+gs.price);
//输出商品库存
System.out.println("商品库存:"+gs.number);
System.out.println("============="+name+"=============");


java之自定义数据类型_自定义类型_04

java之自定义数据类型_自定义类型_05

2.3、自定义类型注意事项与内存图

注意事项:

    这里完成的是不完整的自定义类型,更为完整的自定义类定义方式会在面向对象时详细解释,大家在这里先熟悉熟悉,我们是串着讲,为了给大家讲的清楚。 

    与引用类型数组类似,同为引用类型的自定义类型直接打印对象的引用变量,结果为对象地址值,这里可以通过内存图简单解释。

内存图展示:

java之自定义数据类型_java_06

结语:

这一篇是我们后面讲面向对象的缩影,希望大家能自己动手敲一敲代码,自己感受一下,我的每一步代码和代码演示截图都在文章中有贴,只要按照我的格式敲下来,保证不会出错,在敲的时候自己也就理解了,还有一些逻辑一眼看不出来的,可直接debug测试一下,我们之前有讲到debug测试(​​debug跳转​​),看看每一步的值变化,感受整个过程,这将非常有意义!

希望兄弟们看完文章有自己的收获,也希望兄弟们现在承受的苦难配得上自己的野心,加油!!!

java之自定义数据类型_概念_07


以上是关于java之自定义数据类型的主要内容,如果未能解决你的问题,请参考以下文章

微信开发之自定义菜单--weixin-java-tools

大数据之自定义高阶函数并调用

大数据之自定义高阶函数并调用

hibernate之自定义数据类型

hibernate之自定义数据类型

09.AutoMapper 之自定义类型转换器(Custom Type Converters)