没有特殊说明,个人全部学习笔记都是从廖老师那里摘抄过来的,侵删java
兜兜转转到了大四,学过了C,C++,C#,Java,Python,学一门丢一门,到了最后仍是要把Java捡起来。因此奉劝你们,面向对象仍是要掌握一门,虽然Python好写舒服,可是毕竟不能彻底面向对象,也没有那么多的应用场景,因此,奉劝看到本文的各位,仍是提早学好C#或者Java,话很少说,直接开干!数组
每一个Java程序只能有一个public修饰的类,而且该类的名字要和该Java程序文件同名。学习
Java入口程序规定的方法必须是静态方法,方法名必须为main
,括号内的参数必须是String数组。ui
public static void main(String[] args) { // 方法名是main // 方法代码... } // 方法定义结束
类名首字母大写,方法名首字母小写。编码
Java的每一行语句必须以分号结束。3d
特殊的多行注释须要写在类和方法的定义处,能够用于自动建立文档。code
/** * 能够用来自动建立文档的注释 * * @auther liaoxuefeng */ public class Hello { public static void main(String[] args) { System.out.println("Hello, world!"); } }
Eclipse IDE提供了快捷键Ctrl+Shift+F
(macOS是⌘+⇧+F
)帮助咱们快速格式化代码的功能。对象
Java中,变量分为两种:基本类型的变量和引用类型的变量。blog
在Java中,变量必须先定义后使用,在定义变量的时候,能够给它一个初始值。ip
不写初始值,就至关于给它指定了默认值。默认值老是0
。
不一样的数据类型占用的字节数不同,byte
刚好就是一个字节,而long
和double
须要8个字节。
┌───┐ byte │ │ └───┘ ┌───┬───┐ short │ │ │ └───┴───┘ ┌───┬───┬───┬───┐ int │ │ │ │ │ └───┴───┴───┴───┘ ┌───┬───┬───┬───┬───┬───┬───┬───┐ long │ │ │ │ │ │ │ │ │ └───┴───┴───┴───┴───┴───┴───┴───┘ ┌───┬───┬───┬───┐ float │ │ │ │ │ └───┴───┴───┴───┘ ┌───┬───┬───┬───┬───┬───┬───┬───┐ double │ │ │ │ │ │ │ │ │ └───┴───┴───┴───┴───┴───┴───┴───┘ ┌───┬───┐ char │ │ │ └───┴───┘
在Java中的整形,和他们的取值范围
public class Main { public static void main(String[] args) { int i = 2147483647; int i2 = -2147483648; int i3 = 2_000_000_000; // 加下划线更容易识别,并且不会有错 int i4 = 0xff0000; // 十六进制表示的16711680 int i5 = 0b1000000000; // 二进制表示的512 long l = 9000000000000000000L; // long型的结尾须要加L System.out.println(i3); } }
浮点型的数就是小数,由于小数用科学计数法表示的时候,小数点是能够“浮动”的
float f1 = 3.14f; float f2 = 3.14e38f; // 科学计数法表示的3.14x10^38 double d = 1.79e308; double d2 = -1.79e308; double d3 = 4.9e-324; // 科学计数法表示的4.9x10^-324
布尔类型boolean
只有true
和false
两个值,布尔类型老是关系运算的计算结果
boolean
表示为4字节整数。字符类型char
表示一个字符。Java的char
类型除可表示标准的ASCII外,还能够表示一个Unicode字符。
char
类型使用单引号'
,且仅有一个字符,要和双引号"
的字符串类型区分开。定义变量的时候,若是加上final
修饰符,这个变量就变成了常量:
final double PI = 3.14; // PI是一个常量 double r = 5.0; double area = PI * r * r; PI = 300; // compile error!
var关键字
StringBuilder sb = new StringBuilder(); var sb = new StringBuilder();//类型的名字太长了
变量的做用范围
遵循四则运算规则,可使用任意嵌套的小括号
整数的数值表示不可是精确的,并且整数运算永远是精确的,即便是除法也是精确的,由于两个整数相除只能获得结果的整数部分:
求余运算使用%
整数的除法对于除数为0时运行时将报错,但编译不会报错。
整数因为存在范围限制,若是计算结果超出了范围,就会产生溢出
,而溢出不会出错,却会获得一个奇怪的结果。
自增/自减
++
运算和--
运算,它们能够对一个整数进行加1和减1的操做:若是对一个负数进行右移,最高位的1
不动,结果仍然是一个负数:
还有一种不带符号的右移运算,使用>>>
,它的特色是符号位跟着动,所以,对一个负数进行>>>
右移,它会变成正数,缘由是最高位的1
变成了0
。
对byte
和short
类型进行移位时,会首先转换为int
再进行位移。
仔细观察可发现,左移实际上就是不断地×2,右移实际上就是不断地÷2。
位运算是按位进行与、或、非和异或的运算。
运算优先级
在Java的计算表达式中,运算优先级从高到低依次是:
()
! ~ ++ --
* / %
+ -
<< >> >>>
&
|
+= -= *= /=
类型自动提高与强制转型
(类型)
int
的两个高位字节直接被扔掉,仅保留了低位的两个字节。int
或long
),没有必要为了节省内存而使用byte
和short
进行整数运算。浮点数运算和整数运算相比,只能进行加减乘除这些数值计算,不能作位运算和移位运算。
因为浮点数存在运算偏差,因此比较两个浮点数是否相等经常会出现错误的结果。正确的比较方法是判断两个浮点数之差的绝对值是否小于一个很小的数:
整数运算在除数为0
时会报错,而浮点数运算在除数为0
时,不会报错,但会返回几个特殊值:
NaN
表示Not a NumberInfinity
表示无穷大-Infinity
表示负无穷大double d1 = 0.0 / 0; // NaN double d2 = 1.0 / 0; // Infinity double d3 = -1.0 / 0; // -Infinity
能够将浮点数强制转型为整数。在转型时,浮点数的小数部分会被丢掉。若是转型后超过了整型能表示的最大范围,将返回整型的最大值。
若是要进行四舍五入,能够对浮点数加上0.5再强制转型。
整型和浮点型运算时,整型会自动提高为浮点型。
>
,>=
,<
,<=
,==
,!=
&&
||
!
!
>
,>=
,<
,<=
==
,!=
&&
||
b ? x : y
,它根据第一个布尔表达式的结果,分别返回后续两个表达式之一的计算结果。在Java中,字符和字符串是两个不一样的类型。
字符类型
char
保存一个Unicode字符\u
+Unicode编码来表示一个字符char
类型表示,它们都占用两个字节。要显示一个字符的Unicode编码,将char
类型直接赋值给int
类型即便可。char c1 = 'a' char c2 = '中' int n1 = 'a'//65 int n2 = '中'//20013 // 注意是十六进制: char c3 = '\u0041'; // 'A',由于十六进制0041 = 十进制65 char c4 = '\u4e2d'; // '中',由于十六进制4e2d = 十进制20013
字符串类型
\"
表示字符"
\'
表示字符'
\\
表示字符\
\n
表示换行符\r
表示回车符\t
表示Tab\u####
表示一个Unicode编码的字符字符串链接
+
链接任意字符串和其余数据类型
+
链接字符串和其余类型,Java会自动将其余类型转换为字符串类型,再链接。多行字符串
"""..."""
表示多行字符串不可变特性
s
变了吗?其实变的不是字符串,而是变量s
的“指向”s
还在,只是咱们不能再经过s
访问空值null
String s1 = null; // s1是null String s2; // 没有赋初值值,s2也是null String s3 = s1; // s3也是null String s4 = ""; // s4指向空字符串,不是null
Java的数组有几个特色:
0
,浮点型是0.0
,布尔型是false
;引用类型
引用类型
(如String),但数组自己是引用类型
;用数组变量.length
获取数组大小
int[] ns = new int[] { 68, 79, 91, 85, 62 };//这样能够不声明数组的大小 int[] ns = { 68, 79, 91, 85, 62 };//还能够进一步简化为这样
字符串数组