学习内容大纲
JAVA简介
面向对象。
操作系统有windows.linux的,JVM java虚拟机,是实现java平台无关性的关键。
解释和执行的过程是由java虚拟机来完成的,把字节码文件解释成具体平台上的机器指令执行。
一次编译,到处运行。
jdk是面向开发人员的,jre是面向使用者的。
JDK环境搭建
要想运行java程序,是需要安装JDK的。
JDK是oracle公司的产品。
JDK8这个版本,开发中普遍使用的版本,最常见最稳定的。
如下8u241版本号。
JDK为大家提供的案例的下载,如下,有兴趣可以下载。
windows下载上面的版本,如果需要账号登录,我们可以创建账号登录。
如何查看JDK安装成功了没有
windows+r 输入cmd,输入如下java -version查看安装的版本
注意,printIn是小写的L,而不是大写的i.
一般情况下,把类名作为保存的文件的名字。
如何运行JAVA文件
在cmd中运行javac 文件名即可。但是如果报错javac不是内部或外部命令,那么我们要将javac加入到环境变量当中去。
选择高级系统设置。
系统变量是全局生效的,用户变量是只对我当前用户生效的,我们一般设置用户变量即可。
正常如上运行javac后会出现一个class文件,也就是字节码文件。
关于环境变量的设置的第二种方法(使用java_home)
不过下面的截图其实不用放在系统变量里,在用户变量就足够了。
classpath
java的类在执行的时候,会去搜索这些类生成的字节码文件都在哪里。然后才能执行。
在早期的jdk版本中需要配置classPath的,现在高级的版本是不需要配置的
每次修改完java文件后,重新运行javac进行重新编译,重新运行java进行文件内容的执行。
Java程序的结构
类里面包含主方法。
主方法那行,只有args是可以变的,其他的都是固定的。
java的输出语句
main主方法是程序执行的入口。
程序代码是从主方法开始运行。
开发工具eclipse开发java程序
解压后双击exe文件,选择java文件存放的路径eclipse-workspace文件夹。(通过eclipse创建的工程会默认放在这个文件夹下)
关掉eclipse的欢迎界面,就是
java中使用包是为了内容的分类管理
因为在实际开发中不止一个类,有很多类,这些类的职责不同,要分放在不同的包下进行管理。
不同的包下可以创建同名的类,也是为了解决类的重名问题。
一般包的名字是域名的倒序。
比如我们是imooc.com的域名,那么我们的包名就是com.imooc
右键创建新的包,结果如下
包下右键创建新的class
bin目录下存放的是二进制的字节码文件。
我们编辑类文件后进行保存。
右键运行java程序
可以在控制台看到输出的结果。
代码编译报错信息的显示,在Problems面板中:
编译器就是javac 命令,会将.java的源文件编译成为.class的字节码文件。
.class为扩展名的叫做字节码文件。
.java为扩展名的叫做源文件。
java标识符
类名就是标识符,
变量
变量是存储在内存中的。
类的命名规则:首字母都要是大写的。
数据类型
1字节是8个二进制位。
字面值(变量值)
整型字面值和变量声明
浮点型字面值
整型的末尾什么都不写,表示int类型的字面值。
double类型的数据比float类型的数据大些,当把一个double类型的数据转换成float类型的数据的时候,是有可能出现数据丢失的情况的。
把int类型赋值给长整型(把表示数据范围小的字面值赋值给表示数据范围大的字面值,是允许的)
把float类型的数据赋值给double是可以的,但是把double类型的数据赋值给float是不可以的。
如下,将整型赋值给浮点型,打印出来,发现自动给后面加了.0,变成了浮点型的数值。
在内存的栈中开辟int类型大小的空间,int类型占用4个字节,也就是32个二进制位的。
然后把100存储到开辟的空间中去。
我们可以把n看作是100所在的内存空间的别名。n就是代表100的。
所以如果后面有运算的话,我们直接用n去参与运算。
字符型字面值
如上,我们的结论是:整型和字符类型是可以互相转换的。
互相转换的参照依据就是我们的ASCII码表。可以把一个整型的数值根据ASCII表转换成其对应的字符数据。
char类型是2个字节表示的,也就是16个二进制位,表示的数据范围是0-65535 (2的16次方是65536),是没有负数的。
Unicode编码
因为ASCII码是美国提出的,所以主要是支持英文字母和特殊字符,但是对中文和其他语言是不支持的,所以为了支持世界上所有的字符集,那么我们就有了Unicode编码,
单引号引起的内容是字符,双引号引起的内容是字符串。
回车光标会回到这行的最开始,而换行是换到下一行。
双引号里写\t,相当于是只有一个字符的字符串。
字符本身是一个整型,单引号的时候,把字符都转换成整数了,然后进行了一个加法运算,所以得到27了。
而改成双引号,就成了字符串的连接了。
类型转换
我们把int类型的数据赋值给长整型数据,
字符可以用整型表示,但是有数据范围,超出范围,就会报错,就会进行强制类型转换,但是强制类型转换会引起数据丢失。
实线表示无信息丢失的数据类型转换,虚线表示可能在转换过程中发生精度丢失。
按照箭头方向走的是自动类型转换,箭头反方向走的就是强制类型转换了。
如上,长整型有8个字节,单精度只有4个字节,那么把长整型的赋值给单精度的,会导致精度的丢失。
常量
常量有个命名规则,常量一般都是用大写字母去表示。
如果是两个单词组成的,就中间用下划线进行连接。
在java中,我们有时候会把字面值也叫做常量,实际上字面值是常量和变量实际的表示的数值,
字面值和final定义的我们都称为常量。
Java运算符
sum,num1,num2都是操作数;=,+都是运算符;
自增自减运算符
运算符放在前面:先自增/自减,后赋值;
运算符放在后面:先赋值,后自增/自减;
只对一个操作数进行操作的运算符,如++,–,那么它是单目运算符。
加减乘除求余数,是对两个操作数进行操作的运算符,那么它是双目运算符。
赋值运算符
关系运算符
上面框起来的两句是从键盘接收数据。
逻辑与运算符
因为++在后面,所以先比较,再自增,这里比较的时候,n是3.
逻辑或运算符
运算符的优先级
流程控制
if语句下,只有一条语句,那么大括号是可以去掉的。
为了避免程序产生歧义,大括号是必须加上的。
如下图,就有了歧义,因为if是和最近的else一起的,所以框起来的是一组。
但是如果我们想让else和第一个if为一组的话,就得加上大括号来实现了。
Switch结构
7.0是在之前的版本上加了一个String类型。
循环结构
do-while循环
注意,do-while的执行顺序:
1.首先执行do中的内容,执行完成后,判断while是否符合条件,符合条件则继续执行do中的内容。
while的作用是什么,是判断要不要继续执行do中内容。
for循环
表达式1:对循环变量定义,并初始化的表达式。
表达式2:循环条件的表达式。
表达式3:对循环条件进行改变的表达式。
整个for循环是一个整体,所以n只在for循环内使用。
如果for循环没有表达式2,那么我们会认为,这个表达式2是true,将永远执行for循环体中的内容。
嵌套循环
案例:求阶乘的累加和
发生溢出,数字太大,导致溢出,导致为负数了。
break语句和continue语句
注意如下,break只跳出了内层循环,但是不会影响外层循环的执行。
continue语句
程序调试
F5是运行到自定义方法的时候,会跳到方法里去执行。
多断点调试
按f8键,就直接从一个断点执行到下一个断点。
F11进行debug
总结