一个java源文件中,可以出现多个class定义,比如有5个class,那么编译之后,就会生成5个class文件,有多少class定义,就会生成多少个class文件
public:公共的,并且一个java文件中,只能有一个public类,且public的类的类名必须和文件名一致
class:类,定义类的关键字
类名,
命名标准:大小写字母、美元符号$、数字,且数字不能开头,不能使用关键字和保留字但是public的类的类名必须和文件名一致
程序入口是程序的第一条语句,但是在java中是以main方法作为程序入口
java程序严格从上往下从左向右执行
注意事项:
1、入口方法拼写
2、大小写错误,java中严格区分大小写
3、标点符号的使用,尤其是中英文
4、不保存
有*****说明没保存
5、命名错误
只能有大小写字母A-Z a-z 数字0-9 下划线 _ 美元符号$ ,不能以数字开头
不能使用关键字和保留字
关键字:java中已经被使用的单词:比如 public static void class
保留字:java中还没有使用的关键字,但是可能在后续的更新中使用
不能单独使用关键字和保留字,比如publiic1 或者classpublic 都是可以的
Ststem.out.printle() //向控制台打印
JVM特性:
四大特性:
跨平台
自动垃圾回收机制
多线程
面向对象
java是准动态强类型解释型语言
编译型语言:效率高,只需要编译一次,运行多次,但是跨平台性能差
解释型语言:通过解释器直接将源代码编译,运行效率低,每次执行都需要解释一遍,但是跨平台性能高。
JAVA运行机制
java代码通过编译器(javac)生成 .class(字节码文件) 通过java指令将字节码文件储存在JVM中,然后通过JVM来适配对应的操作系统(windows、linux等操作系统)
所以是JVM跨平台
数据类型
程序:是个静态概念,一般保存在硬盘中
文件类型:文本(给人看的)、二进制(给电脑看的)、可执行
编辑器:用于编写文本文件的工具程序叫编辑器(记事本等)
数据存储:数据要运行,必须先存储
存储方式:
内存:两端无限延伸的线,保存的是电子位(电子位 统称 位 bit/b;byte 字节=8bit;short=2byte=16bit;int=4bbyte=32bit;long=8byte=64bit)
硬盘:螺旋线(正负极)
光盘:同心圆(凹凸槽)
存储单位
bit:比特,一个比特就是一个电子位
byte:字节=8bit(-128~127)
为了表示符号位(负数),所以最高位作为符号位,1表示正数,0表示正数,负数保存的都是补码
int:=4byte=32bit
数据类型
本质:就是规定占用内存空间的大小,用位和字节表示
分类:
基本数据类型
数值型
整数型
Byte (字节) 8
Short (短整型)16
int(整型) 32
long(长整型) 64
浮点型
Float
double
字符型
Char
布尔型
Boolean
引用数据类型
类
数组
接口
进制
java没办法直接表示二进制
十进制表示法 int i_1=10
八进制表示法 int i_2 =012
八进制最多只能写到7
十六进制表示法 int i_4=0x1f
java中整数默认为正数,所以一下这个代码是进行了自动类型转换,把int值赋值给long类型
long i_5=2147483647
超过int上限会报错
如何生命long的值,后面加L/l 建议用L,因为避免l和1用混
小数
float 4byte 32位
double 8byte 64位 java中小数默认为double
因为默认是double,所以float声明必须要加F/f才可以运行(float f_2= (float)1.34) 强制类型转换为float
java经常报的错:编译异常;运行异常
字符型
char 字符型 用英文单引号表示,并且只能有一个字符
字符--->整数-->二进制
最初的ASCII编码
‘a' 97 'A' 65 '0' 48
采用unicode编码
转义符:把有意义字符转换为无意义字符
比如 char用 ’‘ 单引号表示,并且只能出现一个字符,如果我想输入单引号,怎么办? 转义
java中\表示转义符
\t :制表符
\\:转义转义符
\r\n:换行符
布尔型
* boolean 不是 bool
* 1、只有两个值:true/false,没有1和0
* 2、默认值为false
* 3、不参与任何类型转换
* 4、占用1字节,全是0表示false,0000001表示true
* 一般用于流程控制或者逻辑判断
类型转换
* 1、8种基本数据类型,除了boolean以外,都可以进行转换
*
* 2、低精度向高精度是自动转换
*
* byte -->short -->int --> long -->double 自动类型转换
* char-->
* 其他就需要强制转换
* 强制转换有可能损失精度,造成数据不准确
* 3、高精度向低精度是强制转换
*
* 混合运算
* 当一个运算中出现多个类型的值的时候,结果一定是最大类型
* 当byte,short,char,int四种中任意一种或多种进行运算,结果都是int类型