初识Java
Java概述
1、Java语言 半解释半编译
解释:语言。JS。浏览器可以直接运行JS文件。不需要翻译。.JS
编译:Java,Scala。hello.java是我们程序员写的,以10进制为单位写的文件。计算机只认2进制。我们所写的Java文件计算机是不认识的,我们需要有一个翻译把我们写的java文件翻译给计算机听。
2、Java历史
1995年,詹姆斯高斯林创建sun公司,发明了Java语言,印尼的爪洼岛咖啡。Java语言logo是一杯咖啡,寓意就是为全世界软件爱好者递上一杯热乎的咖啡。早期运用于移动端。2009年sun公司被Oracle(甲骨文)旧金山收购。Java是用什么写出来的---C和C++。C是万物之祖。
3、计算机:
软件:看得见摸不着。操作系统:Windows、Linux、macOS
硬件:看得见摸得着 CPU 显卡 内存16G 一块固态硬盘512以上。尽量不要买混合硬盘。CPU尽量在4核心以上。
电脑推荐:CPU4核,16G+512的内存硬盘。
4、内存:
物理内存、虚拟内存
5.操作系统 会操作一些基本指令
(1)打开指令控制台win+R
(2)输入盘符d:,直接切换到目标的盘
(3)cd返回上一级目录
(4)进入指定的目录cd a、
(5)dir指令查看当前目录下的文件和文件夹信息|dir是目录的缩写|
(6)创建一个空文件copy nul a.txt
(7)向文件内写入内容echo 123456>a.txt
(8)复制文件copy a.txt b.txt
(9)删除文件del a.txt 不走回收站,永久性删除
6.计算机的一些设置
1)显示后缀名
2)文件的浏览方式
3)建议不要用第三方杀毒软件。尤其是360,建议火绒
7.二进制
~可计算器.程序员工具进行进制之间的转换
存储单位:1bit=1位,1byte=8bit,1kb=1024b,1mb=1024k,1gb=1024m,1tb=1024g,1pb=1024t
二进制的加减法运算
十进制是逢十进一,二进制逢二进一。十进制世界的最大数为9,二进制世界的最大数为1
八进制 1234567
十六进制 0123456789abcdef
Java分为三个版本
JavaSE:做桌面应用程序。Java基础
JavaEE:企业级应用。要学习的
JavaME:手机端,已经淘汰
Java的特点
1、面向对象 我要找一个人来做,他做什么我不管
面向过程 我自己要做什么
2、跨平台:平台就是操作系统。用Java写的软件可以在任意操作系统上运行。
3、简单性和C
4、解释执行计算机执行的是 .class文件,解释执行.class
5、多线程。多个任务同时进行
6、分布式
7、健壮性 强数据类型的语言,有异常处理和垃圾回收机制
8、安全性 可以通过第三方插件来设置一个安全防范机制
Java环境搭建
1、安装Java
2、配置环境变量
1)计算机-右键-属性-高级系统设置-环境变量-系统变量上新建JAVA_HOME(C:\Program Files\Java\jdk-11.0.15)-确定
2)找到原来就存在的Path,双击打开,不要动里面的原有的值,新建,粘贴jdk安装路径到bin目录的路径(C:\Program Files\Java\jdk-11.0.15\bin)或(%JAVA_HOME%\bin),点击所有的确定。
3)常用的指令 java,javac,javap,java -version,java -jar
3、写一个程序
1)创建一个.java文件
2)通过cmd指令控制台找到这个Java文件
3)Java文件是我们写的,计算机不认识,现在我们需要翻译(编译)一下,使用Java指令操作hello.java,结果生成了一个hello.class。这个hello.class就是计算机要去解释执行的文件。这个hello.class我们是不认识的,说明这个hello.class是一个二进制文件,把我们写的hello.java以二进制的形式转成hello.class又叫字节码文件。
总结一下:
通过javac hello.java把它编译成了.class,系统去解释执行了这个hello.class。
到底是谁做的这些事?
在我们去配置环境变量的时候,实际上相当于在系统上去搭建了一台虚拟机
JDK:java developer kit java开发工具包。JDK10这个版本之前有单独的JRE;JDK11往后,没有单独的JRE。
JRE:java runtime environment java运行环境。如果只需要运行不需要开发,可以只安装JRE。
JVM:java virtual machine java虚拟机
初识Java
1.Java是严格区分大小写Hello hello
2.写代码的时候,一行代码要么用;结束,要么写{}
3.所有的符号都是英文状态下 输入法:全角|半角
4.代码提示,一定要注意看代码提示。如果你写的东西没有提示,多半是错的。
5.idea有报错功能,如果你发现你写的代码有错误,就别运行了
什么是类?
类,是Java开发中的一个最小单位,一个Java开发的项目是由一堆类组成的class
类的命名规则
在开发中,只要是可以命名的东西,标识符。
类名的命名规则:
(1)只能由字母,数字,下划线,美元符号$组成。数字不能开头。不建议使用$号,下划线尽量不要开头,下划线能别用也别用。推荐使用英文字母和数字,大部分字母(英文单词),驼峰式命名,如果这个类名由多个单词组成,每个单词的首字母要大写。
Java中的注释
1.单行注释//
2.多行注释/* */
3.文档注释/** */
三种注释都有调试代码的功能
/**
* 文档注释
*/
public class Ch01 {
// 单行注释
/* 多行注释 */
// 主方法
public static void main(String[] args) {
// 控制台打印输出语句,快捷键sout
System.out.println("你好");
}
}
关键字
官方解释:这个字有它独一无二的作用
非官方的解释:在idea中变橙色(蓝色)的字就是关键字
关键字不能用来命名!!关键字都是小写的。Java中有多少个关键字---50个左右,其中有两个保留字(现在没用,暂定先留着goto与const)。
Java中的数据类型
两种:基本数据类型和引用数据类型
基本数据类型(都是关键字):4类8种--要求是会读会写、知道啥意思!
1、整型
byte:字节型 -128~127(256个数,中间有个0 为什么256个数,因为它占一个字节--2^8)
short:短整型 -2^15 - 2^15 2个字节-16位 2万多
int:整型 -2^31 - 2^31 4个字节-32位 4亿多
long:长整型 -2^63 - 2^63 8个字节-64位 很大 L/l
2、浮点型
float:单精度浮点型 4个字节-32位。很大,比long还大。小数 F/f
double:双精度浮点型 8个字节-64位。比long还大。小数
3、字符型
char:字符型 2个字节-16位 0~255
4、布尔型
boolean true和false 1个字节=8位 1位(1和0)有争议
public class Ch02 {
public static void main(String[] args) {
// 字节型
byte v1 = 10;
System.out.println(v1);
// 短整型
short v2 =20;
// 整型
int v3 = 30;
// 长整型
// 使用长整型需要在值的后面加上一个L或l,推荐L
long v4 = 300000000L;
// 单精度浮点型
// 使用float需要在值的后面加上一个F或f
float v5 = 522222222.53333333F;
// 双精度浮点型
double v6 = 5.6;
// 字符型
// 字符型需要加单引号,并且引号中只能放一个
char v7 = '你';
// 布尔型
boolean v8 = true;
boolean v9 = false;
}
}
变量
定义变量:为了后期的维护,以及重复使用。
减少使用字面量(常量)。
标识符,变量名的命名规则,小驼峰stuNo。变量的值通过等号 =赋值, 把等号右边的值赋值给左边的变量。
如果在程序中看见一个整数的字面量,没有任何数据声明,它默认是int。
如果在程序中看见一个小数的字面量,没有任何数据声明,它默认是double。
public class Ch03 {
public static void main(String[] args) {
// 10是什么类型?int
// 10.5是什么类型?
byte v1 = 127;
long v2 = 30000000L;
System.out.println(10.5);
}
}
Java中的运算+ - * / %
数据类型严格的变成语言
Java中的除法如果是两个整数相除,得到的一定是整数。
-整数和整数做运算,得到的一定是整数。
精度
整型:4种整数类型,精度是和位数挂钩的,位数越大,精度越高
浮点型:double的精度比float要高
浮点型 > 整型
低精度和高精度的做运算,得到的一定是高精度数据类型的结果。
为什么int类型的数据给byte给不了?
大给小:有一种可能是小的装不下,所以大不能给小。
基本数据类型的转换:
1.自动类型转换(自动类型提升)低精度->高精度
2.强制类型转换 高精度->低精度。如果平白无故的想把低精度转成高精度也是得强转。
a++ ++a
本意都是让a自增1
a++:表示先赋值,后运算
++a:表示先运算,后赋值
看+号的位置,哪个先出来,结果就是哪个~
如:a=10 a++=10;++a=11
public class Ch05 {
public static void main(String[] args) {
int a = 10;
// a++;// a = a + 1;
// a++ = 10 -> a = 11
// ++a = 12 -> a = 12
// a++ = 12 -> a = 13
System.out.println(a++ + ++a + a++ + a);
// a++:表示先赋值,后运算
// ++a:表示先运算,后赋值
// 如果a=10,问:你a++等于几?->10 问你++a等于几?->11
}
}
赋值运算符
+= -= *= /= %=
从计算结果来看,a+=1--->a = a + 1
赋值运算符可以进行数据类型的转换,包括a++也可以
public class Ch06 {
public static void main(String[] args) {
// 赋值运算符
byte b = 127;
// b = b + 1;
// b += 1;
b++;
System.out.println(b);
}
}
比较运算符
结果都是布尔类型 true false
public class Ch07 {
// 比较运算符,结果都是布尔类型
// > >= < <= == !=
public static void main(String[] args) {
int a = 10;
int b = 20;
// a b在跟c做比较的时候会发生自动类型提升
double c =10.0;
System.out.println(a == c);
}
}
逻辑运算符
与:
只有当所有条件都为true,它整体的结果才是true。如果有一个为false,则整体即为false。
双与:当发现条件中,只要有一个false,则停止判断
单与:无论有多少个false,所有条件都看
=》双与的效率高
或:
只有当所有条件都为false,它整体的结果才是false。如果有一个为true,则整体即为true。
双或:当发现条件中,只要有一个true,则停止判断
单或:无论有多少个true,所有条件都看
=》双或的效率高
非:取反
异或:
有假有真即为真,全真全假即为假
public class Ch08 {
public static void main(String[] args) {
// 逻辑运算符 与 或 非 异或
int a = 10;
int b = 20;
// 与 &&(短路与) &
// 或 ||(短路或) |
// System.out.println(a < 5 || b > 6);
// 异或
System.out.println(a < 5 ^ b > 6);
}
}
位运算符
public class Ch09 {
public static void main(String[] args) {
// 位运算符
// & |
// 00001010
int a = 10;
// 00010100
int b = 20;
// System.out.println(a ^ b);
int x = 2;
// <<3 左移三位
// System.out.println(2 << 3);
// >>3 右移三位
// System.out.println(x >> 1);
// >>> 无符号右移:将运算符左边的对象向右移动运算符右边指定的位数
System.out.println(x >>> 3);
}
}
三目运算符
public class Ch10 {
public static void main(String[] args) {
// 三元运算符 三目运算符
int a = 10;
double b = 20.5;
char c = 'a';
// 条件表达式 ? 表达式1 :表达式2
// Java里的三元运算符,要求:两个表达式的运行结果的数据类型是相同或可以自动转成相同的
double max = a > b ? a : b;
System.out.println(max);
}
}
char的特殊性
public class Ch11 {
public static void main(String[] args) {
// char的特殊性
char a = 'a';
int i = a;
// Java底层当中存在映射表 ASCII码
// 字符型abcdefg每一个字符在计算机保存时都是以ASC码的形式
// char类型是16位,short是一样的,可以自动转换成int,long,float
// 当char自动转换成数值类型,会对应着ASCII码去转换
// 把整数类型转换成char类型,会对应着ASCII码去转换
// 由于char类型有这样的特殊性,开发中尽量不使用char
System.out.println(i);
// +号具有连接符的作用
System.out.println('你' - '好' * '啊');
}
}