Java小白入门必学!最全数据类型和运算符笔记,附实例

墨雨云烟 2021-05-04 09:08:58
java 小白 入门 最全 必学



这篇内容专门为Java小白、或者想入门Java的同学以及正在学习Java的同学整理的,希望可以帮助到你们。本内容主要讲解Java数据类型和运算符的使用等等,每个知识点都有示例。

Java小白入门必学!最全数据类型和运算符笔记,附实例

一.整型变量

1.基本格式

int 变量名 = 初始值;

代码示例:

public class CSDN { public static void main(String[] args) { int a=10; System.out.println(a); }}

2.java中的int是4个字节。

3.java中int的最大值和最小值

如果数大于0,则最高位为0,如果数小于0,则最高位为1。在判断数值范围时,不用考虑负数采用补码形式存储,因为补码和原码是一一对应的。当最高位是1,即为负数,后面最多还有31个1,而这31个1的加值之和为2的31次方-1,而负数最高位也为1,该位在再次进位时仍满足负数的条件,即可将最高位看成数值位,故最小值为-2的31次方,最大值整数最高位必须一值为1,且原码等于补码,这就限制了整数的最大值31位的1相加,之和为2^31-1。

 public class CSDN{ public static void main(String[] args) { int a = 10; System.out.println(Integer.MAX.VALUE); System.out.println(Integer.MIN.VALUE); } }

4.如果一个局部变量,没有进行初始化则不能使用他。

标识符可以包含:数字、字母、下划线符号,但开头不能用数字,也不建议用下划线。

二. 长整型变量

定义一个长整型,数字后面必须加L

 public static void main(String[] args) { Long a = 10L; System.out.println(a); }

java与c语言不同,没有所谓的无符号,Long有8个字节,64个比特位,首位是符号位。

如果想打印汉字的话用加号拼接。

public static void main(String[] args) { Long a = 10L; System.out.println(a); System.out.println("a的值是:"+a);//打印汉字用引号括起来然后用加号拼接

任何类型的数据和字符串进行拼接,结果就是字符串。

三.双精度浮点类型

 public static void main(String[] args) { //双精度浮点型 double d = 12.5; System.out.println(d); }

小数默认为双精度类型。

public static void main(String[] args) {int a = 1;int b = 2;System.out.println(a / b);}//输出结果是0

因为a和b都是整型,所以打印的也是整型,不能保存小数。

public static void main(String[] args) {,double num = 1.1;System.out.println(num * num)// 执行结果=1.2100000000000002}

任何的小数都是有精度的,没有精确值,只有一个范围,要研究这个问题需要了解浮点数在内存中的存储。

一般情况下,遇到小数,建议使用double。

四.单精度的浮点类型

float是4个字节,不能把double类型放在float类型里,会编译错误,需要在小数后面加个f,体现了Java的安全。

public static void main(String[] args) { float f = 12.3; System.out.println(f); }

五.字符数据类型

在java中char占两个字节,在c语言中是占一个字节的。

public static void main(String[] args) { char ch = 'a'; System.out.println(ch); char ch2 = 97; System.out.println(ch2); }

在java中遵循unicode字符集类似于c语言中的asii值,但unicode表示字符的范围更广了。

六.字节类型

注意事项:

字节类型表示的也是整数. 只占一个字节, 表示范围较小 ( -128 -> +127 )

字节类型和字符类型互不相干。

 public static void main(String[] args) { byte b = 12; byte c = 21; System.out.println(b+" "+c); }

每一种数据类型在赋值的时候不能超过其范围,否则会报错。

七.短整型

short是两个字节,取值范围是-32768到32767。

这个表示范围较小,一般不建议使用。

 public static void main(String[] args) { short sh = 12; System.out.println(sh); }

八.布尔类型

1.在java中,布尔类型没有明确的大小。

2.在java中,布尔类型只有两个取值,true和false。

3.在java中,没有所谓的0是假,非0是真。

public static void main(String[] args) { boolean flag = true; System.out.println(flg); }

总结:

java中8种基本的数据类型分别是下面的:

1 2 2 4 8 4 8

byte char short int long float double boolean

Byte Character Short Integer Long Float Double Boolean

字符串类型变量

字符串类型用String进行定义

注意事项:

Java 使用 双引号 + 若干字符 的方式表示字符串字面值.

和上面的类型不同, String 不是基本类型, 而是引用类型(后面重点解释).

字符串中的一些特定的不太方便直接表示的字符需要进行转义.

字符串的 + 操作, 表示字符串拼接:

String a = "hello"; String b = "world"; String c = a + b; System.out.println(c);

以上代码说明, 当一个 + 表达式中存在字符串的时候, 都是执行字符串拼接行为。

因此我们可以很方便地使用 System.out.println 同时打印多个字符串或数字。

理解数值提升

int 和 long 混合运算

int a = 10; long b = 20; int c = a + b; // 编译出错, 提示将 long 转成 int 会丢失精度long d = a + b; // 编译通过

结论: 当 int 和 long 混合运算的时候, int 会提升成 long, 得到的结果仍然是 long 类型, 需要使用 long 类型的变量来

接收结果. 如果非要用 int 来接收结果, 就需要使用强制类型转换。

byte 和 byte 的运算

byte a = 10; byte b = 20; byte c = a + b; System.out.println(c); // 编译报错Test.java:5: 错误: 不兼容的类型: 从int转换到byte可能会有损失 byte c = a + b;

结论: byte 和 byte 都是相同类型, 但是出现编译报错. 原因是, 虽然 a 和 b 都是 byte, 但是计算 a + b 会先将 a 和 b 都提升成 int, 再进行计算, 得到的结果也是 int, 这是赋给 c, 就会出现上述错误。

由于计算机的 CPU 通常是按照 4 个字节为单位从内存中读写数据. 为了硬件上实现方便, 诸如 byte 和 short 这种低于4 个字节的类型, 会先提升成 int, 再参与计算。

类型提升小结:

不同类型的数据混合运算, 范围小的会提升成范围大的.

对于 short, byte 这种比 4 个字节小的类型, 会先提升成 4 个字节的 int , 再运算.

int 和 String 之间的相互转换

int 转成 String

int num = 10; // 方法1 String str1 = num + ""; // 方法2 String str2 = String.valueOf(num);

String 转成 int

String str = "100"; int num = Integer.parseInt(str);

运算符

1.基本四则运算符 + - * / %

规则比较简单,值得注意的是除法

a) int / int 结果还是 int, 需要使用 double 来计算

b) 0 不能作为除数

2.关系运算符返回类型都是boolean类型。

3.移位运算符

左移 <<: 最左侧位不要了, 最右侧补 0。

右移 >>: 最右侧位不要了, 最左侧补符号位(正数补0, 负数补1)

注意:


1.左移 1 位, 相当于原数字 * 2. 左移 N 位, 相当于原数字 * 2 的N次方。

2.右移 1 位, 相当于原数字 / 2. 右移 N 位, 相当于原数字 / 2 的N次方。

3.由于计算机计算移位效率高于计算乘除, 当某个代码正好乘除 2 的N次方的时候可以用移位运算代替。

4.移动负数位或者移位位数过大都没有意义。

总结:看完本篇内容是不是对Java数据类型和运算符有个详细的了解和认识,创作不易,刷到的伙伴,点赞支持一下吧,非常感谢。

版权声明
本文为[墨雨云烟]所创,转载请带上原文链接,感谢
https://www.seoxiehui.cn/article-318342-1.html

  1. Error in installing qtsdk in centos7.6: you need a C + + compiler
  2. Java集合(复习整理)
  3. Java collection (review)
  4. Hibernate的fetch问题,都琢磨一晚上了
  5. Hibernate's fetch problem has been pondering all night
  6. Kafka原理分析之基础篇
  7. The basis of Kafka principle analysis
  8. 请bang老师帮我看下这样说面向服务和面向对象的关系是否正确,谢谢
  9. struts ActionForm设计的缺陷
  10. 如何从weblogic集群环境中获得一个唯一对象
  11. 使用Redis缓存和Spring AOP使Spring Boot应用更健壮?
  12. Please help me see if the relationship between service-oriented and object-oriented is correct. Thank you
  13. Defects of struts ActionForm design
  14. How to get a unique object from Weblogic cluster environment
  15. Using redis cache and spring AOP to make spring boot application more robust?
  16. Kafka原理分析之基础篇
  17. The basis of Kafka principle analysis
  18. Java应用服务器死了
  19. tomcat session出现问题
  20. java+互联网架构人才
  21. UML和Java的阻抗
  22. The Java application server is dead
  23. There is a problem with Tomcat session
  24. Java + Internet architecture talents
  25. UML and Java
  26. 深入理解Linux内核之内核线程(上)
  27. 如何看待明尼苏达大学因插入实验性漏洞,被禁止贡献 Linux 内核代码?
  28. 梁金荣:使用eBPF追踪LINUX内核
  29. Docker study notes (2)
  30. Deep understanding of kernel threads in Linux kernel (Part one)
  31. How do you think the University of Minnesota is forbidden to contribute Linux kernel code because of the experimental loophole?
  32. Liang Jinrong: tracking Linux kernel with ebpf
  33. 2021Java最新学习路线图新鲜出炉
  34. New learning roadmap for 2021 Java
  35. Spring MVC 的Controller 结构问题
  36. 【烂KDE】Linux登录时用户密码正确,却登录失败
  37. Controller structure of spring MVC
  38. [KDE] when Linux logs in, the user password is correct, but the login fails
  39. HttpSession对象与Cooike的关系 以及 Cookie对象构造函数问题
  40. gRPC-Web:替代REST的gRPC的Javascript库包
  41. java call dll
  42. 用Java构建反应式REST API - Kalpa Senanayake
  43. The relationship between httpsession object and cooike and the construction of cookie object
  44. Grpc Web: a JavaScript library package to replace rest grpc
  45. java call dll
  46. Building reactive rest API with Java - kalpa Senanayake
  47. Five wonders. Feeling of visiting villa in spring
  48. Spring will be far away
  49. 最全面的SpringBoot配置文件详解
  50. 最全面的SpringBoot配置文件详解
  51. 微服务开发神器之JRebel 插件破解和实现本地及远程热部署教程
  52. 漫画 | 你还记得原生的JDBC怎么连接数据库吗?
  53. Java流及流操作示例
  54. The most comprehensive spring boot configuration file
  55. The most comprehensive spring boot configuration file
  56. Cracking and implementing jrebel plug-in of microservice development artifact
  57. Comic | do you remember how the native JDBC connects to the database?
  58. Java stream and stream operation example
  59. ftp连接windows与linux
  60. 装饰器设计模式 - Gene Zeiniss