Java 学习笔记 ------第三章 基础语法
本章学习目标:
- 认识类型与变量
- 学习运算符的基本使用
- 了解类型转换细节
- 运用基本流程语法
一、类型(基本类型)
所谓基本类型,就是在使用时,得考虑一下数据用多少内存长度存比较经济,利用程序语法告诉JVM,然后由JVM自动为你在内存中配置和管理。在Java中的基本类型主要可区分为整数、字节、浮点数字符与布尔。
- 整数:
| 类型 | 长度 | 范围 |
|---|---|---|
| short | 2字节 | -32768 ~ 32767(2-15 ~ 215-1) |
| int | 4字节 | -21474836548 ~ 2147483647(2-31 ~ 232-1) |
| long | 8字节 | 2-63 ~ 263-1 |
字节:byte长度就是1字节,在需要逐字节处理数据时(如图像处理、编码处理等),就会使用byte类型,若用于表示整数,byte可表示-128~127的整数
浮点数:分为float(4字节)和double(8字节)。
字符:在JDK8中,Java使用Unicode 6.2.0编码,JVM结果采用UTF-16 Big Endian,所以每个字符类型占2字节,汉字字符和英文字符都是双字节储存。
布尔:boolean类型可表示true和false。
public class Range{
public static void main(String[] args) {
//byte、short、int、long范围
System.out.printf("%d ~ %d%n",Byte.MIN_VALUE,Byte.MAX_VALUE);
System.out.printf("%d ~ %d%n",Short.MIN_VALUE,Short.MAX_VALUE);
System.out.printf("%d ~ %d%n",Integer.MIN_VALUE,Integer.MAX_VALUE);
System.out.printf("%d ~ %d%n",Long.MIN_VALUE,Long.MAX_VALUE);
//float、double精度范围
System.out.printf("%d ~ %d%n",Float.MIN_EXPONENT,Float.MAX_EXPONENT);
System.out.printf("%d ~ %d%n",Double.MIN_EXPONENT,Double.MAX_EXPONENT);
//char可表示的Unicode范围
System.out.printf("%h ~ %h%n",Character.MIN_VALUE,Character.MAX_VALUE);
//boolean两个值
System.out.printf("%b ~ %b%n",Boolean.TRUE,Boolean.FALSE);
}
}
/*Output:
-128 ~ 127
-32768 ~ 32767
-2147483648 ~ 2147483647
-9223372036854775808 ~ 9223372036854775807
-126 ~ 127
-1022 ~ 1023
0 ~ ffff
true ~ false
*/
二、类型转换
1、double和float
float PI = 3.14 //将double长度的数据放入float中,会损失4字节的数据
float PI = 3.14F //告诉编译程序用float来储存3.14
float PI = (float)3.14 //强制类型转换
2、整数间的转换
//编译时得到integer number too large错误
//因为程序写下一个整数时默认使用不超过int类型长度
int number = 2147483648;
long number = 2147483648;
//告诉编译程序用long来配置整数长度
long number = 2147483648L;
//如果表达式中包括不同类型数值,则运算时以长度最长的类型为主,其他数值自动提升类型
//以下a的值被提升至double
int a = 10;
double b = a * 3.14
//如果操作数都是不大于int的整数,则自动提升为int类型进行运算。
//以下程序存在遗失精度的问题
short a = 1;
short b = 2;
short c = a + b;
三、变量
变量在C语言课程里已经详细讲过,在这里重点强调一下变量的命名规范。
完整的程序中必然充斥着各种功能的变量、常量、函数(方法)等,如何通过命名方式来让它们更直观的表达出各自的作用至关重要。
书中主要提到以下几点:
- 全局变量、类和结构应该有说明性文字
- 局部变量名字尽可能短
- 遵守普遍接受的命名惯例,比如指针使用p结尾(nodep),全局变量大写开头(Global)等等
- 不要太纠结于个人编码规矩,比如使用numPending还是num_pending(Java里偏向第一种)
- 函数的命名,如一些判断条件是否满足并返回布尔类型的函数通常都为is开头(如isUpperCase()),JavaBean里的getter & setter,toString()等等
总结一句话,就是命名与作用相关!
Java平台建立了一整套很好的命名惯例(naming convention),包括字面的(typographical)和语法的(grammatical):
字面惯例的例子:
| 标示符类型 | 例子 |
|---|---|
| 包 | com.xiaoyu.util, org.xiaoyu.dao.impl |
| 类或者接口 | HttpServlet, AsyncTask(单词首字母大写) |
| 方法或者域 | toString, equal, isUpperCase(首单词首字母小写,之后单词首字母大写) |
| 常量域 | IP_ADDR(全部大写,单词之间加下划线) |
| 局部变量 | stuNumber,mString(与方法命名类似) |
| 类型参数 | T,E,V,K等等 |
语法惯例的例子:
- JavaBean中强制的getter和setter
- 转换对象类型的方法(toType),如toArray,toString
- 静态工厂常用名:newInstance、getInstance等等
- ....................
更具体的请点击(http://jingyan.baidu.com/article/574c52193c53fb6c8d9dc104.html)Java命名规范。
四、if-else、while、for、switch
Java中以上流程控制和C语言基本一致。Java中在for循环上有一种简化方法,名叫foreach方法,涉及到数组和集合的遍历循环。之后会有更详细的涉入。
Java 学习笔记 ------第三章 基础语法的更多相关文章
- 《Java程序设计》第三章-基础语法
20145221<Java程序设计>第三章-基础语法 总结 教材学习内容总结 类型.变量与运算符 类型 Java可区分为基本类型(Primitive Type)和类类型(Class Typ ...
- [core Java学习笔记][第一二三章基本语法]
基本语法 1 Java 简单的类型 1.1 一些常量 正无穷大 Double.POSITVE_INFINITY 负无穷大 Double.NEGATIVE_INFINITY 不存在 Double.NaN ...
- 《DOM Scripting》学习笔记-——第三章 DOM
<Dom Scripting>学习笔记 第三章 DOM 本章内容: 1.节点的概念. 2.四个DOM方法:getElementById, getElementsByTagName, get ...
- java学习笔记15--多线程编程基础2
本文地址:http://www.cnblogs.com/archimedes/p/java-study-note15.html,转载请注明源地址. 线程的生命周期 1.线程的生命周期 线程从产生到消亡 ...
- JVM学习笔记-第三章-垃圾收集器与内存分配策略
JVM学习笔记-第三章-垃圾收集器与内存分配策略 tips:对于3.4之前的章节可见博客:https://blog.csdn.net/sanhewuyang/article/details/95380 ...
- 20145330《Java学习笔记》第一章课后练习8知识总结以及IDEA初次尝试
20145330<Java学习笔记>第一章课后练习8知识总结以及IDEA初次尝试 题目: 如果C:\workspace\Hello\src中有Main.java如下: package cc ...
- The Road to learn React书籍学习笔记(第三章)
The Road to learn React书籍学习笔记(第三章) 代码详情 声明周期方法 通过之前的学习,可以了解到ES6 类组件中的生命周期方法 constructor() 和 render() ...
- [HeadFrist-HTMLCSS学习笔记]第三章构建模块:Web页面建设
[HeadFrist-HTMLCSS学习笔记]第三章构建模块:Web页面建设 敲黑板!! <q>元素添加短引用,<blockquote>添加长引用 在段落里添加引用就使用< ...
- java学习笔记14--多线程编程基础1
本文地址:http://www.cnblogs.com/archimedes/p/java-study-note14.html,转载请注明源地址. 多线程编程基础 多进程 一个独立程序的每一次运行称为 ...
随机推荐
- CentOS6安装各种大数据软件 第九章:Hue大数据可视化工具安装和配置
相关文章链接 CentOS6安装各种大数据软件 第一章:各个软件版本介绍 CentOS6安装各种大数据软件 第二章:Linux各个软件启动命令 CentOS6安装各种大数据软件 第三章:Linux基础 ...
- Solr 同义词搜索
1. 进入solr配置目录 cd /usr/local/solr/solrhome/collection1/conf vi schema.xml 增加配置节 <fieldType name=& ...
- 读书笔记《PHP高级程序设计、模式、框架与测试》
序言 闲来无事,下载了一些电子书,然后看书名不错<PHP高级程序设计_模式.框架与测试>,翻了一下虽然书有点老了但是讲的内容经常会碰到!给大家推荐一下,然后这里放上我的读书笔记,每日更新. ...
- stm32串口中断总结
串口文件uart.c需要被用到; 串口通信是对GPIO端口引脚的功能复用,因此需要用到gpio.c; 因为中断的产生,因此中断文件也是需要用到的: 中断响应函数需要自己编写: 接收中断:在接收移位寄存 ...
- android studio 调试技巧(简直太好用)
android studio 调试技巧(简直太好用) 说到android studio的调试,很多人可能会说,这有什么可讲的不就是一个断点调试么,刚开始我也是这么认为的,直到我了解之后,才发现,调试原 ...
- 数据结构与算法之排序(3)插入排序 ——in dart
插入排序的思想比冒泡.选择要复杂,效率也比前两者更高.插入排序算法中运用了分治.逆向冒泡等思想,假设i之前的都是排好序的,i之后的都是待比较并排序的,然后逐次逆向向前比较,若小于前值,则将前值循环依次 ...
- leetcode-744-Find Smallest Letter Greater Than Target(改进的二分查找)
题目描述: Given a list of sorted characters letters containing only lowercase letters, and given a targe ...
- 一些有趣的 Shell 命令
find . -name "*.db" -type f 查找当前路径下名称满足正则*.db的文件,-type d 则是查找文件夹 grep -rn "Main" ...
- EntityFramework6.1自动生成复数名称数据表的问题
遇到一个很奇怪的问题,两个程序部署在两个不同的机器上,一个是.net 4.6.1另外一个是.net 4.0的运行时,两个项目都引用了EntityFramework6.1.3.程序分别执行后,4.0环境 ...
- 20155234 实验三 敏捷开发与XP实践
20155234 实验三 敏捷开发与XP实践 实验内容 1.XP基础 2.XP核心实践 3.相关工具 实验步骤 (一)敏捷开发与XP 敏捷开发(Agile Development)是一种以人为核心.迭 ...