Core Java For The Impatient-阅读笔记1.基本的编程结构
Core Java For The Impatient
1.基本的编程结构
1.Key Points
- 在Java,所有的方法必须在类声明。非静态方法只能在所属类的对象上调用。
- 静态方法不是通过对象调用。程序从静态的main方法开始执行。
- Java有8个基本数据类型;5个整型、2个浮点型、1个布尔型。
- 字符串对象是字符序列,是UTF-16编码中的Unicode编码点的序列。
- 使用System.out对象,终端窗口显示输出。绑定System.in的Scanner可以读取终端输入
- 数组和集合用来收集相通类型的元素。
2.容易忽视的点
编译和运行:javac命令将Java源代码编译成中间代码(字节码),并将他们保存到类文件。Java命令启动JVM,JVM加载类文件并执行字节码。(一旦编译完成,可以在任何JVM上运行)。
Main方法System.out是对象,名为
PrintStream
类的实例,其有println和print等方法,为实例方法。命令行参数String[] args
,程序调用java Greeting -g cruel world
args[0]为-g, cruel和world 也是数组参数。部分数据类型
类型 | 存储需求 | 范围(包含该值) |
---|---|---|
int | 4byte | -2147 483 648 - 2147483647(超过20亿) 2^32 - 1 |
long | 8byte | -264-264-1 |
short | 2byte | -32768-32767 |
byte | 1byte | -128-127 |
float | 4byte | ±3.40282347E+38F(6-7位有效数字) |
double | 8byte | ±1.79769…(15位有效数字) |
int最实用,MIN_VALUE和MAX_VALUE表示最小最大。特别多(超过32位,比如人口),用long,不够用用BigInteger。byte和short,当存储空间珍贵的底层文件处理,大数组处理。Byte.toUnsignedInt(b)方法,可以获得0-255的数值。
以前内存稀缺,默认四个字节float,现在默认double精度。
Java中,整型的范围不依赖于程序所运行的机器。(原则是面向字节码),C/C++,依赖编译程序的处理器。
Double.POSTIVE_INFINITY正无穷,否则负无穷。NaN非数值。
char型:描述Java使用的UTF-16字符编码中的“编码单元”。
1_000_000_000 下划线阅读更容易,编译器会直接删除。
0.0009765625 = 2^-10 可以写成0x1.0p-10,在十六进制可以使用p,而不是e,即使数字用十六进制书写,指数还是用十进制。
非数值被认为是彼此不同的,是性质上属于而不是数字相等。if(x == Double.NaN) 不可用,而是if(Double.isNaN(x)),isInfinite() 判断是否正负无穷大,浮点数不适合金融计算,有误差。【因为浮点数在计算机使用二进制系统表示,1/10没有精确的二进制表示,如果需要精确,用BigDecimal类】
变量:java强类型语言,某个具体类型的值。在方法中声明变量,必须初始化,否则编译错误。
常量:final赋值不能变化,方法外声明用static,System类声明了一个常量
public static final PrintStream out
,可以在任何地方使用System.out,少有的几个常量没有大写的情况之一。一组相关常量,定义枚举enum Weekday{MON, TUE, WED,THU,FRI,SAT, SUN};
使用Weekday startDay = Weekday.MON;
算术操作,注意点:+比<<(算术移位)优先级高,
3 + 4 <<5
的运算顺序是(3+4)<< 5
,操作符-=是右结合,i-=j-=k
的意思是i -= (j-=k)
。基本运算:整数除以0会导致异常,如果没有捕获异常,程序会终止。浮点数除以0或产生无限值或者NaN(正负无穷),不会导致异常;判断奇偶数%2,但是如果n为负数,
n%2 = -1
,当操作数为负数,谨慎使用%。
1.经典余数法:
for (int i = -2; i < 3; i++) {if (i % 2 == 1 ) {System.out.println(i + "为奇数");} else if (i % 2 == 0) {System.out.println(i + "为偶数");} else {System.out.println(i + "i % 2=" + i % 2);}
}
弊端:操作数是负数,偶数正常==0,奇数则为-1,一般无法判断。
结果:
-2为偶数
-1i % 2=-1
0为偶数
1为奇数
2为偶数
2.用二进制与1的方法判断
if ((i & 1) == 1) {System.out.println(i + "为奇数");
} else {System.out.println(i + "为偶数");
}
结果:
-2为偶数
-1为奇数
0为偶数
1为奇数
2为偶数
数字类型转换:double和float和long具有单个强制另一个数字转化同类型的能力,其余都为int类型。比如
J + 1
为74,char next = (char) ('J' + 1);
cast转换如果越界只有最后一个值保存下来。操作符:
n = n | 0xF
将最低四位设置为1,n = n^0xF
对n进行反转,参数比特位反转:~0XF= 1....10000
>> 以0替换前面的位,而>>>以符号位扩展为最前面的位。
//0xF = 15
int a = 0x6; // 0110
int b = a | 0xF; // 1111 15
int c = a ^ 0xF; // 1001 9
int d = ~ 0xF; // 1000 16
d >> 1; // -8
d >>> 1; // 2147483640
大数 :valueOf转化,操作大数要用方法调用。
字符串顺序比较:first.compareTo(second),如果前者排在后者的前面,返回负整数,后面则为正整数,否则为0。【两个字符的unicode之差】;字符串数字转换Integer.toString(n,2);// 设置基数2-n-2;
case:标签整数、char、byte、short、int或包装类,文字串,枚举类型值。长忘记加break,可以编译时加配置。
javac -Xlint:fallthrough xxpagckage/XXClass.java
@SuppressWarning(“fallthrough”)这样不会为该方法产生警告(注解给编译器或者其他工具提供信息)数组:数组和列表复制等
Arrays.copyOf(primes,primes.length); // 新长度,可截取
ArrayList<String> copiedFriends = new ArrayList<>(friends);// 将元素传递,但是两者不会影响。(深拷贝)
ArrayList<String> copiedFriends = new ArrayList<>(Arrays.asList(names));// 变成列表
- 二位数组:杨辉三角
private static int[][] YongHuiTri(int n) {int[][] tri = new int[n][];for(int i = 0; i < n; i++) {tri[i] = new int[i + 1];tri[i][0] = 1; tri[i][i] = 1;for(int j = 1; j < i; j++) {tri[i][j] = tri[i - 1][j - 1] + tri[i - 1][j];}}return tri;
}
二维数组快速输出:System.out.println(Arrays.deepToString(yongHuiTri));
Core Java For The Impatient-阅读笔记1.基本的编程结构相关推荐
- core JAVA for the impatient 阅读笔记(3) 继承
继承一个类 实例变量和动态变量称为域,类中的域,方法和嵌套类/接口统称为类成员 反射机制:一种在程序运行期间查找类及其成员的能力 return **super.**getSalary()+bonus; ...
- [Core Java® for the Impatient]重载Java2
2019独角兽企业重金招聘Python工程师标准>>> Chapter 2. Object-Oriented Programming Set(Mutator Methods)方法改变 ...
- java怎么重载两次_[Core Java® for the Impatient]重载Java2
Chapter 2. Object-Oriented Programming Set(Mutator Methods)方法改变对象的状态,Get(accessor methods)方法则不: Java ...
- 《core JAVA for the impatient》阅读笔记(5) 泛型编程
泛型方法 类型参数要放在修饰符之后,返回类型之前 public static <T> void swap(T[] array,int i,int j) 调用时: String[] frie ...
- 《core JAVA for the impatient》阅读笔记(2) lambda表达式
lambda表达式 只有一个抽象方法的接口对象,就可以提供一个lambda表达式(函数式接口) 将lambda表达式放入类型为函数式接口的变量中,这样它就被转换为该接口的实例 list.removeI ...
- 《core Java for the impatient》阅读笔记(1) 基本编程结构
第一章 基本的编程结构 System类中声明了一个常量 public static final PrintStream out 可以在任何地方使用System.out 这是少有的几个常量没有大写的情况 ...
- 《Java开发手册》阅读笔记(三)
一.集合处理 1.只要覆写 equals,就必须覆写 hashCode:Set集合存储对象必须重写hashCode和equals:自定义对象作为map的key必须重写- image.png 2.Arr ...
- 《Java深入解析》阅读笔记二(运算符与表达式)
---恢复内容开始--- i+++j如何计算 +++的运算 i+++j的结合运算是:(i++)+j. 贪心规则 因为编译器极度的"贪心",所以他会尽可能多的结合有效的符号,而不管结 ...
- java exp5_[Core Java® for the Impatient]重载Java1
Chapter 1. Fundamental Programming Structures 八个基本概念: 所有的Java方法都生命在类里,调用非静态的方法是基于该方法所在类的实例化的对象: 静态方法 ...
最新文章
- jenkins换服务器找不到包,服务器重启后Jenkins项目部分丢失问题解决方法
- CF1066F-Yet another 2D Walking【贪心】
- 工作309:selectaccount方法接收值
- Serverless 风暴来袭,前端工程师如何应对?
- 程序编程代码大全_CNC加工中心程序代码大全
- [Unity] 定义 Assembly 之后还要定义 Assembly Reference
- eclipse package explorer视图中怎么让default package不显示?
- Java变异出现错误:No enclosing instance of type XXX is accessible
- tomcat配置虚拟目录的方法
- python list函数使用总结_python——list总结
- faster rcnn fpn_Faster-RCNN详解和torchvision源码解读(三):特征提取
- 除了html 还有什么页面,HTML页面布局有哪些?
- 【Excel】数据处理与查看
- 分享一个Atmega128L单片机在IAR for AVR中的串口1收发数据的例程
- torch/utils/cpp_extension.py raise RuntimeError(message) from e
- 单个正态总体方差的置信区间
- 期权理论基础1 对冲法
- Resetting first dirty offset of __consumer_offsets
- 一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
- 系统架构设计应考虑的因素
热门文章
- 霄卓机器人_机器人推动产业创新升级 央企千万投资上海霄卓
- c语言程序重命名,如何在C语言编程里面修改源文件名字?
- 浅谈一下如何避免用户多次点击造成的多次请求
- python3.4使用教程_python3.4使用循环的实例详解
- Godaddy主机修改PHP版本教程,GoDaddy主机如何在后台更改主域名最新图文教程
- FloTHERM XT 风冷水冷实例仿真分析视频教程
- background:url(../images/list01.png) no-repeat 0 center;是什么意思
- 《关于建立统一的城乡居民基本养老保险制度的意见》
- Java 二阶段 html
- sgu106-109