Java核心技术 卷一 复习笔记(甲
1.数据类型
包含八种基本类型,其中四种整形(int/short/long/byte),两种浮点类型(float/double),
一种用于表示Unicode编码的字符类型char,一种表示真值的boolean类型
整形大小排序long(接近正无穷)>int(2147483647)>short(32767)>byte
(127)浮点类型大小排序 double>float
浮点计算建议使用BigDecima类
关于类型强转
整型值和布尔值之间不能进行相互转换
2.变量
变量是指内存中的一个存储区域,该区域要有自己的名称(变量名)、
类型(数据类型),该区域的数据可以在同一数据类型的范围内不断变
化值;
变量的声明
每个变量都有一个类型(type)。变量的数据类型总是在变量名之前,并
必须以分号结束,变量名中所有的字符都是有意义的,并且大小写敏感。
变量名不能使用Java保留字作为变量名。变量名的长度基本上没有限
制。可以在一行中声明多个变量(但不建议使用,应逐一提高代码可读性
)
变量初始化
声明变量后,必须用赋值语句对变量进行显示初始化,未初始化变量会
被Java编译器认为认为语句序列错误引起 ERROR--variable not initialized 错误
变量初始化可以在一行中进行,也可以在多行中进行
一行: int a = 1;
多行: int a;
a = 1;
变量初始化声明可以放在代码中的任何位置,但是按照可读性原则建议尽可能的靠近变量第一次使用的地方
3.常量
在Java中,利用关键字final 指示常量
示例:
final double CM_PER_INCH = 2.54;
关键字 final 表示这个变量只能被赋值一次。一旦被赋值之后,就不能
够再更改了。习惯上,常量名使用全大写。
在 Java 中,经常希望某个常量可以在一个类中的多个方法中使用,通
常将这些常量称为类常量。可以使用关键字 static fina设置一个类常
量。
示例:
public static final double CM_PER_INCH = 2.54;
类常量的定义位于main()的外部。因此,在同一个类的其他方法中也可以使用这个常量。而且,如果一个常量被声明为 public,那么其他类的方法也可以使用这个常量。
一般调用方法为 类名.常量名
4.运算符
在 Java 中,使用算术运算符 +、-、 *、/ 表示加、减、 乘、除运算
。 当参与 / 运算的两个操作数都是整数时, 表示整数除法;否则,
表示浮点除法。 整数的求余操作(有时称为取模)用 % 表示。例如,
15/2 等于 ,7 15%2 等于 1 , 15.0/2 等于 7.50需要注意,
整数被 0 除将会产生一个异常, 而浮点数被 0 除将会得到无穷大或 NaN 结果。
数学函数与常量
在Java中,主要使用Math和number类进行计算,number类包含(byte short integer long double float),char 和
boolean 不支持计算,Number 类属于 java.lang 包。
示例:
import static java.1ang.Math.*;
import java.lang.Number.*;
System.out.println("a = " + sqrt(a));
其中 sqrt() 为求平方根,sqrt()为静态方法
常用方法
Math.sqrt(16); //4.0 -- 计算平方根
Math.cbrt(8); //2.0 -- 计算立方根
Math.hypot(3,4); //5.0 - 计算(x的平方 + y的平方)的立方根(勾三股四
Math.pow(3,2); //9.0 -- 计算a的b次方
Math.exp(3); //20.0855369231 -- 计算e^x的值
Math.max(7,18); //18 -- 输出最大值
Math.min(2,3,4); //2 -- 输出最小值
Math.abs(-10); //10 -- 求绝对值
Math.abs(16); //16
Math.ceil(10.8); //11 -- 返回整数值(大)
Math.ceil(-10.8); //10
Math.ceil(0.0); //0.0
Math.ceil(-0.0); //-0.0
Math.floor(10.8); //10.0 -- 返回整数值(大)
Math.floor(-10.8); //-11.0
Math.floor(0.0); //0.0
Math.floor(-0.0); //-0.0
Math.random(); //0.1245// -- 输出[0,1)间的随机数 0.8979626325354049
Math.random()*100; // -- 输出[0,100)间的随机数 32.783762836248144
Math.rint(10.8); //11.0 -- 四舍五入(返回double值)
Math.rint(10.2); //10.0
Math.rint(-10.5); //-10.0
Math.rint(-10.51); //-11
Math.round(16); //16 -- 四舍五入(返回long值)
Math.round(-16); //-16
Math.nextUp(16); //16.0000001 -- 返回比A大一点的数
Math.nextDown(16); //15.99999999-- 返回比A小一点的数
Math.nextAfter(16,17); //16.1111111 -- 返回大于A小于B的数
数值类型转换
在Java中,经常需要将一种数值类型转换为另一种数值类型
合法转换 表示无信息丢失的转换
其中合法转换:
char
↓
byte -> short -> int -> long
(损失)↓↙(损失)↘↓(损失)
float -> double
其中int可无损失转换为long、double
float可无损失转换为double
int转float、long转double、long转float都可能有精度丢失
强制类型转换
在Java中,如果需要由高精度转换为低精度时,可能需要强制类型转换。
强制类型转换的语法格式是在圆括号中给出想要转换的目标类型,后面紧跟待转换的变量名。
例如:
double x = 9.997;
int nx = (int) x;// nx = 9
强制类型转换通过截取小数部分将浮点值转换为整型
如果想对浮点数进行舍入运算可以在后面加入Math.round方法
int nx = (int) Math.round(x);
赋值运算符
是指在赋值过程中,加入二元运算符,是对赋值并运算的简写
例如:
x += 4 等价 x = x+4;
同理可有 +=、-=、*=、/=、%=
注意:在进行赋值运算时,如果发生强制类型转换,会进行强制转换操
作
例如
x+=4.5 等价于 (int)(x + 4.5)
自增自减运算符
在Java中,提供了自增(++) 自减(--)运算符;n++是将变量n的当前值加1,n--是将n的 值减1。由于这些运算符会改变变量的值,所以它们的操作数不能是数值,当写成4++
时,就是不合法的语句。
除了以后缀形式出现外,自增自减运算符还会以前缀方式出现,++n,--n都会使变量
值加1或减1.
在表达式中使用时,运算符在前会先进行+1或-1,运算符在后,会使用原来的值。
例如
int m = 7;
int n = 7;
int a = 2 * ++m;//a = 16,m = 8
int b = 2 * m++;//b = 14,n = 8
关系和boolean运算符
关系运算符
==(判断等号两端值是否相同)
!=(判断等号两端值是否不同)
<(小于) >(大于) <=(小于等于) >=(大于等于)
逻辑运算符
&& 逻辑与 自左到右 2>1 && 3<5 true 表示必须同时满足两边条件才为true
|| 逻辑或 自左到右 2<1 || 2>5 false 表示满足任意一边条件即可为true
! 逻辑非 自右到左 !(2>4) true 表示取右边条件的相反数
优先级!运算级别最高,&& 运算高于||运算。!运算符的优先级高于算数运算符,而
&&和||运算符则低于关系运算符
三元操作符
?: 表示如果条件为true,表达式 condition?expression1:expression2
执行expression1的值,否则计算为expression2的值
例如
x<y?x:y 会返回x和y中较小的一个
位运算符(一般不使用)
处理整型类型时,可以直接对组成整型数值的各个位完成操作。这意味着可以使用掩
码
技术得到整数中的各个位。位运算符包括:
& ("and") | ("or") A ("XOr") ~ ("not")
有》《和 运算符将位模式左移或右移。
》> 运算符会用 0 填充高位
括号与运算符级别
如果不使用圆括号, 就按照给出的运算符优先级次序进
行计算。同一个级别的运算符按照从左到右的次序进行计算(除了表中给出的右结合
运算符
外。)
示例:
a && b || c
等价于
(a && b) || c
a += b += c
等价于
a += (b += c)
运算符优先级
运算符 结合性
[].()(方法调用) 从左往右
!~++ -- +(一元加法) -(一元减法) ()(强制类型转换) new 从右往左
* / % 从左往右
+ - 从左往右
<< >> >>> 从左往右
< <= > >= instanceof 从左往右
== != 从左往右
& 从左往右
^ 从左往右
| 从左往右
&& 从左往右
|| 从左往右
?: 从右往左
= += -= *= /= %= &= |= ^= <<= >>= >>>= 从右往左
优先级由高到低排列
枚举类型
有时候,变量的取值只在一个有限的集合类。但其中可能会保存一个错误的值
针对这种情况可以自定义枚举类型。枚举类型包括有限个命名的值。例如
enum Size{SMALL,MEDIUM,LARGE,EXTRA_LARGE};
可以通过声明这种类型的变量给予指定变量赋值
Size s = Size.MEDIUM;
Size类型的变量只能存储这个类型声明中给定的某个枚举值,或者null值,null表示这个变量没有设置任何值
Java核心技术 卷一 复习笔记(甲的更多相关文章
- Java核心技术 卷一 复习笔记(乙
1.字符串从概念上讲,Java字符串就是Unicode字符序列.Java没有内置的字符串类型,而是在标准Java类库中提供了一个预定义类,叫String. 每个用双引号括起来的字符串都是 String ...
- Java核心技术 卷一 复习笔记(丁
面向对象1.面向对象设计概述 1.1.面向对象是什么 面向对象是一种程序设计范型(简称OOP),是针对对象进行开发,简化开发过程的一种设计方式 1.2.类 类是构造对象的模板,相当于一个烘焙模板,而对 ...
- 《Java核心技术卷一》笔记 多线程同步(底层实现)
一.锁的基本原理 多个线程同时对共享的同一数据存取 ,在这种竞争条件下如果不进行同步很可能会造成数据的讹误. 例如:有一个共享变量int sum=0, 一个线程正调用 sum+=10,另一个线程正好也 ...
- 《Java核心技术卷一》笔记 多线程
有时,我们需要在一个程序中同时并行的处理多个任务,如播放器一边要播放音乐同时还要不断更新画面显示,或者是一边执行耗时任务,UI还能一边继续响应各种事件.还有的时候,一个任务需要很长时间才能完成,如果分 ...
- 【阅读笔记】Java核心技术卷一 #0
这是一篇备忘性质的读书笔记,仅记录个人觉得有用的知识点 本文作为一个目录索引,部分章节跳过 吐槽:此书中文翻译有不少地方不太通顺,这种情况我要把英文版对应的部分也读一遍才能明白(说实话,英文里的从句表 ...
- java核心技术卷一
java核心技术卷一 java基础类型 整型 数据类型 字节数 取值范围 int 4 +_2^4*8-1 short 2 +_2^2*8-1 long 8 +_2^8*8-1 byte 1 -128- ...
- 对《Java核心技术卷一》读者的一些建议
<Java核心技术卷一>是唯一可以和<Java编程思想>媲美的一本 Java 入门书.单从技术的角度来看,前者更好一些.但上升到思想层面嘛,自然后者更好,两者的偏重点不同. 思 ...
- Java二次复习笔记(1)
Java二次复习笔记(1) Java采用的默认字符编码集是Unicode. byte=byte+byte报错,值为int,而byte+=byte不报错.同样short = short+short报错, ...
- 读《java核心技术卷一》有感
过去一个多月了吧.才囫囵吞枣地把这书过了一遍.话说这书也够长的,一共706页.我从来不是个喜欢记录的人,一直以来看什么书都是看完了就扔一边去,可能有时候有那么一点想记录下来的冲动,但算算时间太紧,很多 ...
随机推荐
- SPI操作flash MX25L64读写数据
STM32F10X SPI操作flash MX25L64读写数据 简单的一种应用,ARM芯片作为master,flash为slaver,实现单对单通信.ARM主控芯片STM32F103,flash芯片 ...
- bzoj 1660: [Usaco2006 Nov]Bad Hair Day 乱发节【单调栈】
开一个单调递减的单调栈,然后用sum数组维护每个点的答案,新加点的时候一边退栈一边把退掉的点的sum加进来 #include<iostream> #include<cstdio> ...
- [Swift]Array数组的swapAt函数
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- GG_Logs 日志类库封装使用说明
3.6.GG_Logs 日志类库封装使用说明 GG_Logs类库项目,Nuget安装log4net 添加代码配置代码: [assembly: log4net.Config.XmlConfigurato ...
- 1、DOS基本命令
命令dir能给列出当前目录下面的所有文件.程序和子目录.所有目录(Windows 中称为文件夹)的目录名前面都有一个<DIR>标记.文件和程序名前面显示有这些文件和程序的大小. 想说的是, ...
- 【IIS7.5】Asp文件上传限制,加载页面大小限制
运行环境 window server 2008 R2 X64.IIS7.5.应用程序池.Net4.0 经典模式 分析 IIS7.5默认有两处上传限制: 第一处在,选择左侧的站点,然后找到后侧的管理—— ...
- 20 如何在C#中存一批数据,数组
使用软件的一个重要原因,是因为软件可以帮我们重复处理很多事情.在前面我们已经讲到了循环.循环就是为了重复处理一个事情.那么我们有没有想过,我们要重复处理的一批数据怎么在程序里存放呢? 举个例子吧. 我 ...
- sql 所有数据表中 插入字段
declare @tablename varchar(200)declare @sql varchar(2000)declare cur_t cursor forselect name from sy ...
- 什么是2MSL以及TIME_WAIT的作用
TIME_WAIT主要是用来解决以下几个问题: 1)上面解释为什么主动关闭方需要进入TIME_WAIT状态中提到的: 主动关闭方需要进入TIME_WAIT以便能够重发丢掉的被动关闭方FIN包的ACK. ...
- Python的I/O操作
1.读取键盘输入 msg = raw_input("Please enter :") print "you input ",msg #可接受Python表达式作 ...