【.Net vs Java? 】 先来看一下Java和C#的数据类型区别。
新工作.Net和Java都要做,早期也做过一段Java的项目,但没有系统的深入学习过。一直觉得这两门语言估计是最相近的两门语言了,好多代码可以说直接拷过来都不带报错的,但仔细推敲还是有很多的不同。
1. 基本数据类型
Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。
C#提供的类型更细一些。
Java没有基本的decimal类型,有个BigDecimal类型,是一个继承于Number类的类。
C# | Java | |
---|---|---|
布尔型 | bool | boolean |
字符型 | char | char |
整形 | byte | byte |
sbyte | ||
int | int | |
uint | ||
nuint | ||
long | long | |
unlong | ||
short | short | |
unshort | ||
浮点型 | decimal | BigDecimal* |
double | double | |
float | float |
2.结构类型
C#提供像C语言一样的结构体(struct )类型,Java没有此类型,一般通过类实现类似功能。
3.枚举类型
二者都有枚举类型enum。
C#的枚举类型时值类型,默认情况下,枚举成员的关联常数值为类型 int;它们从零开始,并按定义文本顺序递增 1。 可以显式指定任何其他整数数值类型作为枚举类型的基础类型。
enum HttpCode : ushort
{
OK = 0,
BadRequest= 400
}
Java的枚举类型是通过类实现的,所以可以为其添加属性和方法等。
public class Simple {
enum HttpCode
{
OK("请求成功!", 200),
BadRequest("请求失败!", 400);
// 成员变量
private String message;
private int code;
// 构造方法
private HttpCode(String message, int code) {
this.message = message;
this.code = code;
}
// 覆盖方法
@Override
public String toString() {
return this.message;
}
}
public static void main(String[] args) {
System.out.println(HttpCode.BadRequest.toString());
}
}
Java的枚举成员都是通过 Class 在内部实现的,且所有的枚举值都是 public static final 的。
上面的枚举类代码可以理解为:
public final class HttpCode extends Enum{
public static final HttpCode OK;
public static final HttpCode BadRequest;
}
4.元组类型
C#7.0之后提供类元组类型。Java中JDK原生不支持元组,但有框架javatuples支持元祖。
5.可空值类型与包装类型
C#为值类型提供了对应的可空值类型,例如int->int?,本质是通过结构体实现的。
Java为值类型提供了对应的包装类型,例如int->Integer,包装类型为引用类型。
6.Object、String
二者都以Object类型作为所有类型的基类,都提供了String类(以及StringBuilder),注意首字母大小写不同。
【.Net vs Java? 】 先来看一下Java和C#的数据类型区别。的更多相关文章
- 浅析java内存模型--JMM(Java Memory Model)
在并发编程中,多个线程之间采取什么机制进行通信(信息交换),什么机制进行数据的同步? 在Java语言中,采用的是共享内存模型来实现多线程之间的信息交换和数据同步的. 线程之间通过共享程序公共的状态,通 ...
- Java虚拟机12:Java内存模型
什么是Java内存模型 Java虚拟机规范中试图定义一种Java内存模型(Java Memory Model,JMM)来屏蔽掉各种硬件和操作系统的访问差异,以实现让Java程序在各种平台下都能达到一致 ...
- Java多线程编程核心技术---Java多线程技能
基本概念 进程是操作系统结构的基础,是一次程序的执行,是一个程序及其数据结构在处理机上顺序执行时所发生的活动,是程序在一个数据集合上运行的过程,是系统进行资源分配和调度的独立单位.线程可以理解成是在进 ...
- 让Java说话-用Java实现语音引擎
让Java说话-用Java实现语音引擎 2005-11-07 10:04:09 分类: Java技术 为应用程序加上语音能力有什么好处呢?粗略地讲,是为了趣味,它适合所有注重趣味的应用,比如游戏.当然 ...
- [Java] Servlet 3 —— 用Java生成GET/POST请求
Servlet是SUN指定的Java服务器端编程规范,用以处理来自客户端的请求,处理并做出响应的一套基础API.Servlet是运行在 Servlet容器中的Java小程序,容器运行在服务器端,服务器 ...
- Java入门-浅析Java学习从入门到精通【转】
一. JDK (Java Development Kit) JDK是整个Java的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具和Java基础的类库 ...
- Java高级--Java线程运行栈信息的获取 getStackTrace()
我们在Java程序中使用日志功能(JDK Log或者Log4J)的时候,会发现Log系统会自动帮我们打印出丰富的信息,格式一般如下:为了免去解析StackTrace字符串的麻烦,JDK1.4引入了一个 ...
- Java——(二)Java集合容器
------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.基本概念 1)Collection:一个独立元素的序列,这些元素都服从一条或多条规则.Lis ...
- Java泛型学习笔记--Java泛型和C#泛型比较学习(一)
总结Java的泛型前,先简单的介绍下C#的泛型,通过对比,比较学习Java泛型的目的和设计意图.C#泛型是C#语言2.0和通用语言运行时(CLR)同时支持的一个特性(这一点是导致C#泛型和Java泛型 ...
- Java源码学习 -- java.lang.StringBuilder,java.lang.StringBuffer,java.lang.AbstractStringBuilder
一直以来,都是看到网上说“ StringBuilder是线程不安全的,但运行效率高:StringBuffer 是线程安全的,但运行效率低”,然后默默记住:一个是线程安全.一个线程不安全,但对内在原因并 ...
随机推荐
- linux 常用命令(四)——(centos7-centos6.8)Vim安装
centos是默认安装了vi编辑器的,vim编辑器是没安装或者未完全安装的,个人习惯用vim,所以记录一下vim编辑器的安装: 1.查看vim相关软件信息: yum search vim 2.在线安装 ...
- Redis消息的发布与订阅
- Django中使用MySQL数据库的连接配置
1. 安装pymysql pip install pymysql 2. 导入 # 在与 settings.py 同级目录下的 __init__.py 中引入模块和进行配置 import pymysql ...
- [考试总结]noip模拟47
感觉自己放弃题目还是过于容易. 其实第一题不是很难,但是自己拿了一个暴力就走人了.. 然后其实简单优化一下子就有不少分数. 然后第二题的本质不同的子序列个数的方程没有推出来,如果推出来就会直接有 \( ...
- Python - 面向对象编程 - self 参数
为什么要讲 self 参数 class PoloBlog: def __init__(self): ... def say(self): ... 在类里面,所有实例方法都需要加 self 参数,且排在 ...
- Linux 学习路线
前言 这篇文章会一直更新...只是将个人的文章总结归纳到这,不代表最佳学习路线 没有链接的文章后续会补上...还没写的知识点未来用到也会补上...太卷了 常用基础命令 Linux常用命令 - cd命令 ...
- Mysql常用sql语句(4)- distinct 去重数据
测试必备的Mysql常用sql语句系列 https://www.cnblogs.com/poloyy/category/1683347.html 前言 我们使用select进行数据查询时是会返回所有匹 ...
- Spring Boot 入门系列(二十七)使用Spring Data JPA 自定义查询如此简单,完全不需要写SQL!
前面讲了Spring Boot 整合Spring Boot JPA,实现JPA 的增.删.改.查的功能.JPA使用非常简单,只需继承JpaRepository ,无需任何数据访问层和sql语句即可实现 ...
- Apache Dolphin Scheduler - Dockerfile 详解
Apache DolphinScheduler 是一个分布式去中心化,易扩展的可视化 DAG 工作流任务调度系统.简称 DS,包括 Web 及若干服务,它依赖 PostgreSQL 和 Zookeep ...
- swiper-wrapper轮滑组件(多组轮滑界面)间隔无效问题
在多组此种轮滑效果出现时,你需要加两个属性值,即 new Swiper('.swiper-container', { slidesPerView: 3, slidesPerColumn: 2, spa ...