【原】Java学习笔记003 - 数据类型
package cn.temptation;
public class Sample01 {
public static void main(String[] args) {
System.out.println("第一个例子");
}
}
package cn.temptation;
public class Sample02 {
public static void main(String[] args) {
// Java的基本数据类型
// 分为四大类,共八种数据类型
/* 占用字节数
* 1、整数类型
* byte: 字节类型 1 -128~127
* short: 短整型 2
* int: 整型 4
* long: 长整型 8
*
* 2、浮点数类型
* float: 单精度类型 4
* double: 双精度类型 8
*
* 3、字符类型
* char: 字符类型 2
*
* 4、布尔类型
* boolean: 布尔类型 1
*/
// 变量:在程序执行过程中发生变化的量
// 思考:为什么要使用变量?全部都使用常量行不行?
// System.out.println(123);
// System.out.println(123);
// System.out.println(123);
// 现在要进行修改,不要显示123了,要显示456,那么需要把前面使用常量123的地方全部改为常量456
// System.out.println(456);
// System.out.println(456);
// System.out.println(456);
// 注意:使用变量是一种思想:通过封装变化来达到拥抱变化的结果,即在变化时,只需要修改变量赋值的地方,不需要修改变量使用的地方
// int i = 123;
// 变化时,只要修改变量赋值的地方
// int i = 456;
// 把变量使用的地方 和 变量赋值的地方 分离开
// System.out.println(i);
// System.out.println(i);
// System.out.println(i);
// 定义变量的格式:
// 数据类型 变量名 = 初始化的值;
byte i = 3;
System.out.println(i);
short j = 4;
System.out.println(j);
int k = 123;
System.out.println(k);
// Java中书写整型数字,不加说明,默认认为是int类型
// The literal 12345678901 of type int is out of range
// long m = 12345678901;
// 要使用long类型,需要在数字后添加大写的L 或是 小写的l(因为小写的l和数字1容易混淆,所以使用大写的L)
long m = 12345678901L;
System.out.println(m);
// Java中书写浮点书数字,不加说明,默认认为是double类型
// Type mismatch: cannot convert from double to float
// float x = 123.456;
// 要使用float类型,需要在数字后添加大写的F 或是 小写的f(为了保持风格的一致,所以使用大写的F)
float x = 123.456F;
System.out.println(x);
double y = 987.654;
System.out.println(y);
// 字符类型使用单引号把字符包含其中
char z = 'a';
System.out.println(z);
// 布尔类型有两个特殊值:true 和 false
boolean flag1 = true;
boolean flag2 = false;
System.out.println(flag1);
System.out.println(flag2);
}
}
package cn.temptation;
public class Sample03 {
// int i = 123;
public static void main(String[] args) {
// 使用变量的注意事项:
/*
* 1、作用范围(作用域):通过大括号来划定作用范围,变量不在该大括号内且没有其他的范围描述时,是无法使用的
* 2、在同一作用域下,变量不能重复命名
* 3、变量的初始化值:
* 变量没有初始化就直接使用会语法出错
* 要不在声明变量的时候就进行变量的初始化;要不就在使用的时候进行初始化
*/
// int i = 123;
// 在主函数之外定义int类型的变量i,在主函数中(大括号)中无法访问到
// Cannot make a static reference to the non-static field i
// System.out.println(i);
// int i = 3;
// System.out.println(i);
// Duplicate local variable i
// int i = 4;
// System.out.println(i);
// 只对变量进行声明但是不赋值
// int i;
// 对只声明但是不赋值的变量直接使用
// The local variable i may not have been initialized
// System.out.println(i);
// 先做声明
// int i;
// 在使用前进行赋值
// i = 5;
// 再使用变量,这样没有语法问题
// System.out.println(i);
// 声明变量时并对变量进行初始化赋值(初始化)
// int i = 2;
// 如下写法语法没有问题,但是不建议这样写(可读性差)
// int i = 2; int j = 3;
// System.out.println(i);
// System.out.println(j);
// 如下写法也可以,但是不推荐这样写
// int i = 2, j = 3;
// System.out.println(i);
// System.out.println(j);
// 在一行语句中对多个变量进行声明是可以的,并且多个变量之间使用英文的逗号分隔开
int i, j;
// 在一行语句中对于声明好的多个变量进行赋值,不能使用英文的逗号分隔开进行赋值,而只能使用英文的分号分隔开进行赋值
// Syntax error on token ",", ; expected
// i = 2, j = 3;
i = 2; j = 3;
// 上句等价于
i = 2;
j = 3;
System.out.println(i);
System.out.println(j);
}
}
package cn.temptation;
public class Sample04 {
public static void main(String[] args) {
// 两个int类型的变量做加法
// int i = 2;
// int j = 3;
// int result = i + j;
// System.out.println(result);
// byte类型的变量 和 int类型的变量做加法
// byte i = 2;
// int j = 3;
// int result = i + j;
// System.out.println(result);
// int类型的变量 和 int类型的变量做加法,得到的结果赋值给一个byte类型的变量
// int i = 2;
// int j = 3;
// Type mismatch: cannot convert from int to byte
// 赋值号右侧两个int类型的变量相加,得到的结果还是一个int类型的结果,把这个int类型的结果赋值给byte类型的变量,提示类型不匹配
// byte result = i + j;
// System.out.println(result);
// byte类型的变量 和 int类型的变量做加法,得到的结果赋值给一个byte类型的变量
// byte i = 2;
// int j = 3;
// Type mismatch: cannot convert from int to byte
// 赋值号右侧byte类型的变量 和 int类型的变量相加,得到的结果还是一个int类型的结果(类型提升),把这个int类型的结果赋值给byte类型的变量,提示类型不匹配
// byte result = i + j;
// System.out.println(result);
// 解决类型不匹配错误的方法:
/*
* 1、将结果的数据类型改为范围大的数据类型
* 2、使用强制类型转换,注意可能会发生精度丢失的问题
* 联想一下:小碗盛米,大锅里的米比较少的时候,倒入小碗中是没有问题的;大锅里的米比较多的时候,倒入小碗里就有问题了
*/
// 强制类型转换的格式:(要转换为的数据类型)(被转换的数据内容);
int i = 2;
int j = 3;
byte result = (byte)(i + j);
System.out.println(result);
}
}
package cn.temptation;
public class Sample05 {
public static void main(String[] args) {
// 字面量常量整数不加说明,默认是int类型
// byte i = 127;
// System.out.println(i);
// byte i = (byte)127;
// System.out.println(i);
// Type mismatch: cannot convert from int to byte
// byte j = 130;
// System.out.println(j);
byte j = (byte)130;
System.out.println(j); // -126
}
}
/*
* 原码、反码 和 补码
* 规则:
* 1、正数的原码、反码和补码都相同
* 2、负数的反码和原码符号位相同,其他位取反;负数的补码 = 负数的反码 + 1;
* 3、计算机在进行运算时,使用的是补码,最终显示出来的是原码
*
* int类型的正整数130的原码:0000 0000 0000 0000 0000 0000 1000 0010
* int类型的正整数130的反码:0000 0000 0000 0000 0000 0000 1000 0010
* int类型的正整数130的补码:0000 0000 0000 0000 0000 0000 1000 0010
*
* 强制类型转换做了截取
*
* byte类型的 补码:1000 0010 最高位是符号位
* byte类型的 反码:1000 0001
* byte类型的 原码:1111 1110 -126
*/
package cn.temptation;
public class Sample06 {
public static void main(String[] args) {
double i = 123.45;
System.out.println(i);
// 在单精度浮点数后添加F 和 对单精度浮点书进行强制类型转换为float类型,效果一致
// float j = 987.65F;
float j = (float) 987.65;
System.out.println(j);
}
}
package cn.temptation;
public class Sample07 {
public static void main(String[] args) {
// 定义两个byte类型的变量
// byte i = 2;
// byte j = 3;
// Type mismatch: cannot convert from int to byte
// 使用加号进行加法计算时,对于比int类型范围小的数据类型进行了类型提升
// byte result = i + j;
// byte result = (byte) (i + j);
// System.out.println(result);
// 第11行使用byte类型的变量相加提示语法错误,第16行使用int类型的字面量常量相加没有语法错误
byte result = 2 + 3;
// Type mismatch: cannot convert from int to byte
// byte result = 2 + 126;
System.out.println(result);
// 注意:
// 变量相加,先看变量的数据类型是否有问题
// 常量相加,先看结果是否在被赋值的变量的数据类型范围内
}
}
package cn.temptation;
public class Sample08 {
public static void main(String[] args) {
// char字符类型 和 整型存在转换的关系
System.out.println('a'); // a
char i = 'b';
System.out.println(i); // b
// 把字符'c' 和 int类型的数字1做加法,加出来的结果赋值给char类型的变量j
// 因为j的数据类型为char字符类型,所以输出的结果还是字符
char j = 'c' + 1;
System.out.println(j); // d
// 字符类型和int类型做加法,得到的结果是int类型
System.out.println('c' + 1); // 100
// 字符类型和int类型做加法,得到的结果是int类型
System.out.println('B' + 'e' + 'i' + 'J' + 'i' + 'n' + 'g' + 2008); // 2672
// 字符类型和字符类型做加法,得到的结果是int类型
System.out.println('B' + 'e' + 'i' + 'J' + 'i' + 'n' + 'g'); // 664
// 布尔类型不参与加法运算
// The operator + is undefined for the argument type(s) boolean, int
// System.out.println(true + 1);
// boolean flag = false;
// The operator + is undefined for the argument type(s) boolean, int
// System.out.println(flag + 1);
}
}
【原】Java学习笔记003 - 数据类型的更多相关文章
- Java学习笔记三——数据类型
前言 Java是强类型(strongly typed)语言,强类型包含两方面的含义: 所有的变量必须先声明后使用: 指定类型的变量只能接受预支匹配的值. 这意味着每一个变量和表达式都有一个在编译时就确 ...
- Java学习笔记2——数据类型和转换
前提知识: 1字节=8bit:1bit以一个二极管表示,代表2个状态(0或者1):2bit代表22即4种状态(00,01,10,11),8bit即是28即256种状态,16bit即是65536种状态. ...
- Java学习笔记4
Java学习笔记4 1. JDK.JRE和JVM分别是什么,区别是什么? 答: ①.JDK 是整个Java的核心,包括了Java运行环境.Java工具和Java基础类库. ②.JRE(Java Run ...
- java学习笔记16--I/O流和文件
本文地址:http://www.cnblogs.com/archimedes/p/java-study-note16.html,转载请注明源地址. IO(Input Output)流 IO流用来处理 ...
- java学习笔记13--反射机制与动态代理
本文地址:http://www.cnblogs.com/archimedes/p/java-study-note13.html,转载请注明源地址. Java的反射机制 在Java运行时环境中,对于任意 ...
- Java学习笔记(04)
Java学习笔记(04) 如有不对或不足的地方,请给出建议,谢谢! 一.对象 面向对象的核心:找合适的对象做合适的事情 面向对象的编程思想:尽可能的用计算机语言来描述现实生活中的事物 面向对象:侧重于 ...
- 《Java学习笔记(第8版)》学习指导
<Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...
- Java学习笔记:语言基础
Java学习笔记:语言基础 2014-1-31 最近开始学习Java,目的倒不在于想深入的掌握Java开发,而是想了解Java的基本语法,可以阅读Java源代码,从而拓展一些知识面.同时为学习An ...
- java学习笔记01--数据类型
java学习笔记01--数据类型 java数据类型划分 分为两大类型: 1)基本数据类型:类似于普通的值. 2)引用数据类型:传递的是内存的地址. 浮点类型实际上就是表示小数. java基本数据类型 ...
随机推荐
- 当初要是看了这篇,React高阶组件早会了
当初要是看了这篇,React高阶组件早会了. 概况: 什么是高阶组件? 高阶部件是一种用于复用组件逻辑的高级技术,它并不是 React API的一部分,而是从React 演化而来的一种模式. 具体地说 ...
- Vue中实现一个无限加载列表
参考 https://www.jianshu.com/p/0a3aebd63a14 一个需要判断的地方就是加载中再次触发滚动的时候,不要获取数据. <!DOCTYPE html> < ...
- 【译】如何高效的使用 Git
原文链接 代码昨天还是运行好好的今天就不行了. 代码被删了. 突然出现了一个奇怪的 bug,但是没人知道怎么回事. 如果你出现过上面的任何一种情况,那本篇文章就是为你准备的. 除了知道 git add ...
- Centos7 防火墙 firewalld 实用操作
一.前言 Centos7以上的发行版都试自带了firewalld防火墙的,firewalld去带了iptables防火墙.其原因是iptables的防火墙策略是交由内核层面的netfilter网络过滤 ...
- asp.net core 系列 13 日志
一.概述 ASP.NET Core 支持适用于各种内置和第三方日志记录, 供程序的日志记录 API,本文介绍了如何将日志记录 API 与内置提供程序一起使用.对于第三方日志记录提供程序使用,文章最后有 ...
- Lucene 04 - 学习使用Lucene的Field(字段)
目录 1 Field的特性 2 常用的Field类型 3 常用的Field种类使用 3.1 准备环境 3.2 需求分析 3.3 修改代码 3.4 重新建立索引 1 Field的特性 Document( ...
- 学习springboot
一般而言,写个Javaweb应用搭建环境都可能要几十分钟,下载个tomcat服务器,再加上各种xml配置等等,很烦躁,而且每个web应用的配置还差不多,都是什么web.xml,application. ...
- Chapter 5 Blood Type——25
"I usually am — but about what in particular this time?" “我通常都是 —— 但是这次有什么特殊的吗?” "Dit ...
- 一文读懂MapReduce
Hadoop解决大规模数据分布式计算的方案是MapReduce.MapReduce既是一个编程模型,又是一个计算框架.也就是说,开发人员必须基于MapReduce编程模型进行编程开发,然后将程序通过M ...
- Struts2【UI标签、数据回显、资源国际化】
Struts2UI标签 Sturts2为了简化我们的开发,也为我们提供了UI标签...也就是显示页面的标签..... 但是呢,Struts2是服务端的框架,因此使用页面的标签是需要在服务器端解析然后再 ...