【零基础 快速学Java】韩顺平 零基础30天学会Java[学习笔记]
1.Java重要特点
1.Java语言是面向对象的(oop)
2.Java语言是健壮的。
Java的强类型机制、异常处理、垃圾的自动收集等是Java程序健壮性的重要保证
3.Java语言是跨平台性的
test.java----->test.class 可以在Windows和Linux上运行
原理:在每个操作系统中都会有对应不同的JVM虚拟机,包含在JDK中
4.Java语言是解释型的
翻译程序是指把高级语言源程序(如.c .java 等程序员编写的程序语言)翻译成机器语言程序(目标代码,计算机唯一可识别运行的语言)的软件。
翻译程序有三种方式:
- 高级语言 ---编译---> 汇编语言 ---汇编---> 机器语言 C、C++等
- 高级语言 --------编译--------> 机器语言 C#、Go等
- 高级语言 --------解释--------> 机器语言 Python、JavaScript等
注意第三种,解释器按源程序语句顺序逐条翻译并立刻执行(解释一句执行一句)
我们可以说:
解释性语言:javascript,PHP,java
编译性语言:c/c+ +
2.Java运行机制及运行过程
1.JDK=JRE+开发工具集(如Javac,java编译工具)
其中JRE= JVM + Java SE标准类库
2.仅运行开发好的.class文件 只需要JRE
3.Java开发步骤
(1)基础类
public class Hello{ //名为Hello的公有类public static void main(String[] args){System.out.println("hello!")}
}
(2)项目编码问题
如果项目中含有中文注释 ,需将项目编码保持在GBK状态下
(3)命令行命令
//如:java Hello
java +类名
(4)执行流程
(5)开发细节
- main方法是Java应用程序的执行入口,固定格式public static void main(String[] args)
- 严格大小写
- 一个源文件最多一个public类,非public类可以有多个
- public主方法可以在多个非public类中,在执行时指定非public类,入口变成非public类
- 源文件文件名按public类名命名
4.转义字符
注:两个\\写\\\\
5.注释格式
//注释1/** 注释2*//*注释3*/
文档注释——写在类前
6.print函数
print为一般的标准输出
println为一般的标准输出最后输出一个换行
printf主要是继承了C语言的printf的一些特性,可以进行格式化输出
注:【+的作用】
当左右两边都是数值型时,则做加法运算;
当左右两边有一方为字符串,则做拼接运算
7.变量&数据类型
/** 声明一个变量 如C++ 区别在于String大写S **/int a=2;double b=3.4;char c='d';String d="e5";System.out.println(d);
注:String是一种类
特别的:
]ava 的浮点型常量(具体值)默认为double型,声明float型常量,须后加'f’或'F
科学计数法:
System.out.println(2); //输出:2
System.out.println(5.12e4); //输出:51200.0
System.out.println(5.12e-2); //输出:0.0512
浮点数计算偏差
- 解释
当浮点数与整数运算时,整数强制转换成浮点数,即8.1÷2.999...结果是近似2.7的小数
- 判断时
以两个数的差值的绝对值,在某个精度范围里判断。
- 强制转换规则
强制转换规则
char < int < long < float <double
byte < short < int
(char和byte 、short不发生自动转换,若要计算可以先转化成int)
例:
特别的:
大精度不能赋值给小精度
特别的:
String和基本数据类型的转换
转化成string时+“ ”;
转回时,用包装类的方法
注:“123”转回int==123
而“hello”转回int==报错不正常
布尔类型
boolean a=true boolean b=false
与C不同:true不是非0,false不是0
8.API文档
Java 8 中文版 - 在线API手册 - 码工具
9.快捷键
Ctrl+Shift+D 复制光标所在行
10.运算符号(与C一样)
特别注意(易错):
i++
是后置自增运算符,它的作用是将i
的值增加 1,但在表达式中返回i
的原始值即i=i++ // i的结果没有被更新
记忆:
- a=a++; a不变
- b=a++; b不变 a变
- a++; a变
- b= - - a ; b和a都变
11.逻辑运算符
&& 短路与: 如果第一个条件为false,则第二个条件不会判断,最终结果为false【效率高】
& 逻辑与: 不管第一个条件是否为false,第二个条件都要判断
|| 短路或: 一个条件为true,则第二个条件不会判断,最终结果为true【效率高】
| 逻辑或: 不管第一个条件是否为true,第二个条件都要判断
12.三元运算符
a=9;b=10;int result=a < b ? a++ : b--;System.out.println("result="+ result +" a="+ a +" b="+b);输出:result=9 a=10 b=10
a=9,b=10 故a<b成立,让result=a++ 那么result=9 且 a会更新为10;b- -不被执行故b不更新
13.标识符命名规则
严格区分大小写
数字、26个英文字母大小写、_ 、$
14.输入Scanner类
/*** 键入需要Scanner类:简单文本扫描器* 导入Scanner类所在包:java.util**/
import java.util.Scanner;
public class test{public static void main(String[] args){//创建类对象Scanner myscanner = new Scanner(System.in);System.out.println("请输入:");String a = myscanner.next();System.out.println("您的名字是:"+a);}
}
Scanner的其他适用方法,部分如下:
15.进制
- 二进制(0b或0B开头)
0b1010 0B1100
- 八进制(0开头)
01234
- 十六进制(0x或0X开头)
0xABC0 0X111A
16.位运算(补码运算)
~2 按位取反
2&3 按位与
2|3 按位或
3^2 按位异或
算术右移 >> 低位溢出, 符号位不变, 高位补符号位
算术左移 << 符号位不变,低位补0
>>>逻辑右移(无符号右移) 低位溢出,高位补 0
17.原码反码补码
注意:
java中没有无符号数
二进制最高位:符号位(0正1负)
计算机运算时通过补码形式运算,计算机输出的都是原码
18.控制
if、if else、while与C++相同
(1)Switch语句
注意:若没写break:在当前执行体执行结束后将会执行剩余所有的执行体,不会被判断语句阻拦
(2)dowhile
不同与while,dowhile至少执行一次;
19. break和continue的区别
- break用于跳出一个循环体(完全结束一个循环),即一旦在循环体中遇到break,系统将完全结束循环,开始执行循环之后的代码。
- 但当break出现在循环体中的switch语句体内时,起作用只是跳出该switch语句体,并不能终止循环体的执行。
- continue是跳过本次循环体中剩下尚未执行的语句,立即进行下一次的循环条件判定,即只是中止(跳过)本次循环,接着开始下一次循环。
- 注:continue语句只用于循环语句,不用于switch语句。
20.数组
1.初始化
(1)静态初始化int[] a ={6,7,8};int b[]={6,7,8};(2)动态声明int[] c=new int[]{1, 2};(3)分布动态声明int[] d; //声明数组,但未分配空间d=new int[5]; //分配5个大小的空间d[0]=6;...d[4]=6;
没赋值时,默认为0,0.0,
2.赋值问题(引用传递)
数组a的空间大小可以用a.length方法获取
d=new int[5]; //分配5个大小的空间 int[]e=new int[d.length]; System.out.println(e.length);
未完待续...