您的位置:首页 > 编程语言 > Java开发

java学习(一)——数据类型、String类、char类型

2018-10-24 21:05 507 查看

数据类型

基本数据类型

Java是一种强类型语言:共有8种基本类型

1.整型:用于表示没有小数点的部分

1.1

int		4字节
long		8字节
short	2字节
byte		1字节

1.2

长整型数值:后缀L/l
二进制:前缀0b/0B
八进制:  前缀0
十六进制:前缀Ox/0X,可以为数字字面量加下划线,如1_000_000(或0b1111_0100_0010_0000)表示一百万,(这些下划线只是为了让人更易读,编译器会忽略这些下划线)
注:默认整数类型是int类型,在将一个long型字面常量赋给long类型时,必须使用后缀L/l(小写L)

1.3

注:java没有无符号(unsigned)整数类型

class FirstDemo
{
public static void main(String[] args)
{
byte a=23;
int c=345;
short b=78;
long d=1000_2300_45L;
short e=0b1111;

System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d);
System.out.println(e);
}
}

2.浮点型:用于表示有小数部分的数值

2.1

double	8字节	有效位数6~7位
float	4字节	有效位数15位

2.2

float 类型的数值必须有一个后缀f/F
double 类型的数值可以添加后缀D/d
注:默认浮点类型是 double 类型,在将一个浮点型字面常量赋给float类型时,必须使用后缀f/F

2.3 特殊的浮点数值

正无穷大		Double.POSITIVE_INFTNITY
负无穷大		Double.NEGATIVE_INFINITY
NaN(不是一个数字)		Double.NaN		如:0/0、负数的平方根
class FirstDemo
{
public static void main(String \u005B\u005D args)
{
float a1=23.4f;
double b2=456.6;

System.out.println(Double.NEGATIVE_INFINITY);
System.out.println(Double.POSITIVE_INFINITY);
System.out.println(Double.NaN);
}
}

运行结果

-Infinity
Infinity
NaN

3.char 类型:用于表示单个字符(采用Unicode字符)

表示方式

单引号括起来:'A'
十六进制值(范围 \u0000到\Uffff):\u03C0
表示特殊字符的转义序列

4.boolean 类型:用于判定逻辑条件

false 假
true 真
class FirstDemo
{
public static void main(String \u005B\u005D args)
{
System.out.println("退格:\b");
System.out.println("换行:\n");
System.out.println("制表:\t");
System.out.println("回车:\r");

boolean t1=true;
System.out.println(t1);
}
}

引用数据类型

1.数组

2.类

3.接口

其他

变量常量和字符串String

class FirstDemo
{
public static void main(String[] args)
{
//1.变量
int a1;		//变量的声明
double d1=45.3;		//变量声明并初始化
//注:java不区分变量的声明和
1fff8
定义

//2.常量:利用关键字 final(final表示这个变量只能被赋值一次,一旦赋值,就不能够再更改了,常用大写)指示常量
final int MAX=100;
//注:在java中,如果希望一个常量在该类中被多个方法使用,通常将这些常量称为类常量,使用 static final s设置一个类常量

//3.数学常量
System.out.println(Math.PI);
System.out.println(Math.E);

//4.强制类型转换(通过截断小数部分将浮点值转换为整型)
double x=9.993468;
int sx=(int)x;
System.out.println(sx);
//对浮点数进行舍入运算
int sx2=(int)Math.round(x);		//返回最接近参数的long
System.out.println(sx2);

//5.移位运算符
System.out.println(0b111>>2);		//左端补符号位
System.out.println(0b0011<<2);
System.out.println(0b1101>>>2);		//左端补0

//6.枚举类型:枚举类型的变量只存储这个类型声明中给定的某个枚举值或者 null
enum Size{SMALL,MEDIUM,LARCE,EXTRA};
Size s=Size.MEDIUM;
System.out.println(s);

/*7.字符串:java字符串就是Unicode字符序列。
各种字符串存放在公共的字符串池中,字符串变量指向字符串池中相应的位置
String类(不可变字符串):不能修改字符串,但可以使字符串变量引用另一个字符串
*/
//7.1 提取一个子串:第一个参数是起始位置(含该位置字符),第二个参数是结束位置(不含该位置字符)
String str1="Hello Java!";
String s1=str1.substring(4,7);
System.out.println(s1+",长度为"+(7-4));
//7.2 拼接字符串(+):当一个字符串与一个非字符串的值进行拼接时,后者转换为字符串
String str2="This is my first java program.";
String str3=str1+str2;
System.out.println(str3);
//把多个字符串放在一起,用一个定界符分隔
String all=String.join("/","S","M","L","XL");
System.out.println(all);
//7.3 判断字符串是否相等:相等返回true,否则返回false
System.out.println(str1.equals("Hello Java!"));
//忽略大小写
System.out.println(str1.equalsIgnoreCase("hello java!"));
//注:String类型的字符串常量是共享的,而+和substring等操作产生的结果(创建了一个新字符串)并不是共享的。
/*7.4 空串:空串""是长度为0的字符串
null串:表示目前没有任何对象与该变量关联
*/
String str=null;
if(str==null)		//判断一个字符串是否为null
System.out.println("str是null");
str="";
if(str.length()==0)	//判断一个串是否为空
System.out.println("str是空串");
}
}

char类型和Unicode

java的char类型是UTF-16编码的一个代码单元,即2个字节。大多数常用字符一个代码单元就可以表示,而一些辅助字符需要一对代码单元表示
java使用的字符集是Unicode字符集。在Unicode字符集中,与某个字符对应的代码值被称作码点,
UTF-16编码采用不同长度的编码表示所有的Unicode码点,在基本的多语言级别中,每个字符用16位表示,被称为代码单元,而一些辅助字符采用一对相邻的代码单元(即4个字节)进行编码

class FirstDemo
{
public static void main(String[] args)
{
String str1="Hello java!";
//length()方法:该方法返回的是给定字符串所需要的代码单元数量,但大多数常用的Unicode字符一个代码单元就可以表示。所以在这种情况下可以看成是字符串的长度
System.out.println(str1.length());
//codePointCount()方法:该方法返回给定字符串的码点数量,即字符个数
System.out.println(str1.codePointCount(0,str1.length()));

//charAt(n)方法:返回位置n的代码单元
System.out.println(str1.charAt(4));
//得到第i个码点
int p=str1.offsetByCodePoints(0,4);	//返回此String中从给定的index处偏移codePointOffset个代码点的索引。
int cp=str1.codePointAt(p);		//返回指定索引处的字符(Unicode代码点)。

//遍历一个字符串,并且依次查看每一个码点
/*int i=0;
int cp=str1.codePointAp(i);
if(str1.isSupplementaryCodePoint(cp))	//确定指定字符(Unicode 代码点)是否在增补字符范围内。
i+=2;
else
i++;
*/
int[] cods=str1.codePoints().toArray();	//将字符串生成一个int型的流,,每个int值对应一个码点
String str=new String(cods,0,cods.length);	//将码点数组转化成一个字符串

}
}

大数值

如果基本整数运算和浮点运算不能满足精度要求,可以使用java.math中的BigInteger类和BigDecimal类
BigInteger类:实现任意精度的整数运算
BigDecimal类:实现 了任意精度的浮点运算

import java.math.BigInteger;
import java.math.BigDecimal;
public class BigNumber
{
public static void main(String[] args)
{
BigInteger.valueOf(1000000000L);	//返回值等于long的大整数
BigInteger c=new BigInteger("100000000000000000000000000000");
c=c.add(BigInteger.valueOf(100L));	//c=c+other;
System.out.println(c.toString());	//返回此BigInteger的十进制字符串表示形式
c=c.subtract(BigInteger.valueOf(100L));	//c=c-other;
System.out.println(c.toString());
c=c.multiply(BigInteger.valueOf(100L));	//c=c*other;
System.out.println(c.toString());
c=c.divide(BigInteger.valueOf(100L));	//c=c/other;
System.out.println(c.toString());
c=c.mod(BigInteger.valueOf(600000000L));	//c=c%other;
System.out.println(c.toString());

c=new BigInteger("100000000000000000000000000000");
System.out.println(c.compareTo(BigInteger.valueOf(100000000000L)));		//比较大小,大于要比较的数返回正数,小于要比较的数返回负数,等于返回0;

//同上,BigDecimal类也有同样的方法
}
}

C语言数据类型
返回目录

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐