J ava基础-数据类型那点事
不同于JavaScript,Java被称为强类型语言,就是因为它严格固定了数据的类型,也正是因为这一点,但又不仅仅因为这一点,让我觉得Java好难。
JavaScript中数据类型有:String,Number,Boolean,Null,Undefined,Symbol,Array,Object,Function。
使用就很简单,写一个变量,它的值用引号括起来就是个字符串类型
var a = "字符串";
如果是个单独的数字就说明是个数字类型
var a = 1;
如果是true或者false就是个布尔值类型
var a = true;
带[]就是个数组
var a = [1,2];
用{}就是个对象
var a = {name: "xxx"}
特别随意......
也正是因为太随意,导致ts越来越火,而我日常工作中也更多的使用ts。ts就是在写变量的时候规定一下类型
var a: string = "xxx";var b: number = 1;var c: string[] = ["xxx"];
即便这样也比Java简单太多。
Java的数据类型分为基本数据类型和引用数据类型。其中基本数据类型分为:
- 整数类型:byte,short,int,long
- 浮点类型:float,double
- 字符类型:char
- 布尔类型:boolean
整数类型
byte是字节,也是计算机内存中最小存储单位,相当于内存中一个最小的格子,不同数据类型占据的字节数也不同。
一般常用的整型 int,不大不小够用,特别大的数字可以用long,但是在结尾需要加个L。 浮点类型
浮点类型就是带小数的数字,float类型的值结尾需要加个f。
布尔值都js里都一样的。
js在ES6中新增了常量的定义用const,java中用final修饰符将变量改成常量,常量都是大写的。
final double PI = 3.14;
运算部分其实和js中大体一致,稍微有些地方不一样。
java中存在类型自动提升与强制转型的问题,首先这点在ts中实现就特别简单。
const a = 123;const b = a as string; // 这时候b就是字符串类型
类型自动提升
两种类型是彼此兼容的,转换的目的类型占得空间范围一定要大于转化的源类型,这就可以参考上文中各类型所占内存大小的图。 例如。浮点型和整型在一起运算,结果会自动转换成浮点型。 强制转型
因为有整型和浮点类型的区别,强制转换时有失去精度的风险。如下写法:
double a = 2.1;int b = (int) (a + 0.5); // b是个整型
如上代码也是四舍五入的示例代码。
再来个示例代码,写个求根公式的demo。
关于数字的数据类型就这样了,更深入的待我更深入的学习之后再总结。
字符串类型java和js中感觉没啥大区别,只是java中有个字符类型,它属于基本类型。
字符类型,用单引号,只能有一个字符。
char c1 = '左'char c2 = 'L'
字符串类型,都是引用类型,且不可变。
java
String s1 = "Hello";String s2 = s1;s1 = "world";System.out.println(s1 + "," + s2); // world,Hello
js
var s1 = "Hello";var s2 = aa;s1 = "world";console.log(s1, s2); //world Hello
数组的话,java中远比js中严格,
数组是同一数据类型的集合,数组一旦创建后,大小就不可变;
可以通过索引访问数组元素,但索
引超出范围将报错;
数组元素可以是值
类型(如int)或引用类型(如S
tring),但数组本身是引用类型。
over~