概述
第一次发博客,创建一个有关Java学习的路程,现在大一下,本人大一上学习c++但是为通过csdn进行记录,觉得很是可惜,但是我在数据结构中会使用c++进行演示,进行一次温习吧,学习编程嘛,就是周而复始不能间断。(好进入正题)
额,在多说一句,我的Java学习路径是依据霍斯特曼教授的《Java核心技术》来进行的,同时夹杂个人的看法以及理解,若有不恰之处,望诸位不涩赐教。(真的进入正题~)
一.数据类型
Java中含有8中数据类型,
1.4种整形:
(1)int (4字节)short(2字节)long(8字节)byte(1字节),Java中没有unsigned型
长整型需要一个后缀(l/L)
这里存在一个误区就是如果定义long型变量一个小于int最大值(2147483647)的值不加后缀L没有错误,但是定义个大于2147483647的值就会报错如下
,个人推荐只要是long型变量就全部用L型后缀(菜鸟也就说说对不对不知道了)。
由于Java默认整形为int型所以当两个byte型变量计算后就会变成默认的int型代码如下:
这个时候就要使用显示强制转换来将右值转化成byte型。
(2)在一个是关于进制问题,前缀分别如下:
二进制:0b, 八进制:0,十六进制:0x
Java7开始可以用下划线来隔开数值 例如:
但是Java在编译的时候会切除下划线而不影响该数值。
2.浮点性
float (4字节) double(8字节)
Java默认浮点型为double,所以float型变量需要加上后缀(f/F)。
对于溢出有以下的出错误情况:
无穷大:Double.POSITIVE_INFINITY
无穷小:Double.NEGATIVE_INFINITY
不是数字:NAN
可以Double.isNan(x)来区别x是不是一个数字。
但是无法使用无穷小和无穷大来区别,毕竟计算机也不知道无穷小和无穷大到底是哪一个数。
3.char(类型)
用到char型就不得不说万国码(Unicode)了,绝大部分万国码可以使用一个char来进行描述,而有些为2个。
特殊字符的转义序列有:
b 退格 t 水平制表符 n换行 r回车 " 引号 '单引号 \反斜杠
Unicode 转义序列是在解析代码之前就处理,这个就比较尴尬,例如(u0022是表示双引号)看下面的代码:
System.out.println("u0022+u0022");
按理应该输出“”但是输出一个空串
4.boolean型
Java中这个只有true和false两个类型,关键是不能将0和非0转化为布尔型,这个对于一个熟悉c++的人来说有一点点“不爽”,编程体较差。或许这也是它不叫bool要改成boolean的原因吧。
二.变量和常量
Java和c++不一样Java中使用final来定义常量而c++中为const,但是const为保留字在Java中。
常量在于这个值只能复值一次不能在更改,而且常量在定义时必须初始化,而变量则可以定义不初始化。
(常量的标识符全部用大写)
三.运算符
首先Java中的运算符优先级如下(来自百度):
运算符 | 结合性 |
---|---|
[ ] . ( ) (方法调用) | 从左向右 |
! ~ ++ -- +(一元运算) -(一元运算) | 从右向左 |
* / % | 从左向右 |
+ - | 从左向右 |
<< >> >>> | 从左向右 |
< <= > >= instanceof | 从左向右 |
== != | 从左向右 |
& | 从左向右 |
^ | 从左向右 |
| | 从左向右 |
&& | 从左向右 |
|| | 从左向右 |
?: | 从右向左 |
=
|
从右向左
|
对于除法有这样的规则:只有当两个操作数全部为整数时才会采用整数除法,否则采用浮点除法代码如下:
System.out.println(15/2);//结果为7
System.out.println(15.0/2);//结果为7.5
在一个重要的就是逻辑运算符和位运算符
逻辑运算符:&&(逻辑和)||(逻辑或)这两个运算都是按照“短路”方式来进行运算的。
特点:只要前部分不满足或者前部分满足那么,它就不会进行后部分运算。
位运算符:对一个变量的数在二进制上进行操作。
四.Java中的Math类
1.sqrt()开方 2.pow(x,a)幂运算x的a次方 3.sin(),cos(),tan(),PI(π),E(自然底数e)
五。强制转换
所占字节数大的变量转化为所占字节数小的类型变量它的精度通常不改变(个人理解,若有不恰之地,还望指教)。
红色代表会存在精度缺失黑色不存在。
强制转化是截断数据进行转化,不是四舍五入。但是可以利用Math类的静态函数round来实现四舍五入。代码如下;
double num=9.99;
int num1=(int) num;//num1为9
System.out.println(num1);
int num2=(int) Math.round(num);//num2为10
System.out.println(num2);
在使用round()函数后会返回一个long型的变量,故还需要进行强制转化。
六.字符串
1.字符串是对象
字符串都是用“ ”来包括的。
对Java中String而言他本身就是一个lang包里的类所以,他不是一个基本类型,故它可以用来做变量名,但是int等基本类型就不行了。(c++里string也是一个类...同样可以做变量名)
c++:
//c++中string可以做变量名
string string = "asdsagdsf";
std::cout << string << endl;
Java:
String String ="asdasf";
System.out.println(String);
但是当你在所属包中创建一个同名String类就会报错截图如下:
他就会报错说是无法完成从lang包的转化。
2.字符串的子类
字符串可以使用方法substring(int a,int b)来提取一个子字符串,从a开始到b的前面一个字符,所以子字符串的长度为b-a;
3.拼接i
使用+来拼接两个字符串。
静态方法join()方法是把数组元素放到一个字符串元素通过指定的分割符来分开
String str=String.join("/*/", "我","不","是","单身狗");
System.out.println(str);
效果图:
4.拼接ii
利用函数substring()来进行拼接
String str="你好!";
System.out.println(str.length());
str=str.substring(0,3)+"不好!";
System.out.println(str);
5.判断是否字符串相等
使用方法equals()。不能使用==,否者比较的就是二者位置是否相等。(c++也是)
最后
以上就是奋斗滑板为你收集整理的Java中的变量八大类型以及字符串的全部内容,希望文章能够帮你解决Java中的变量八大类型以及字符串所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复