.class文件就是字节码文件( byte code )
关于Java中类的几个问题:
1、一个”.java”源文件中可以包括多个类但只能有一个public的类,并且public的类名必须与文件名相一致(只能有一个与文件名相同的类,可以包含其他类)。
2、为什么一个文件中只能有一个public的类
答:编译器在编译时,针对一个java源代码文件(也称为“编译单元”)只会接受一个public类。否则报错。
3、在java文件中是否可以没有public类
答:public类不是必须的,java文件中可以没有public类。
4、为什么这个public的类的类名必须和文件名相同
答: 是为了方便虚拟机在相应的路径中找到相应的类所对应的字节码文件。
————————————————
javac: compile编译
bin:binary 二进制
IDE:继承开发环境 Eclipse
Java跨平台:
Window、Mac、Linux
JVM=Java Virtual Machine Java虚拟机
java程序就是跑在JVM(Java虚拟机)
如何实现跨平台:不同操作系统的JVM帮助开发者屏蔽了操作系统的不同,通过JVM实现跨平台。
JDK:Java Delelopment Kit Java开发工具包
JRE:Java Runtime Environment Java运行时环境
关键字:
Java保留有特殊用途的关键字
true false和null有与关键字相同的特殊颜色,
但不是关键字 。在java中,这三个符号是3个
字面常量。
return:
方法结束 后面代码不再执行
标识符:(变量的命名)
1、不能用关键字
2、由字母、数字、下划线、$组成,但是不能以数字开头
ps:大小写敏感
给变量起名字的时候要起有意义的名字:“见名知意”
起名规则:
包名:习惯使用小写字母拼写。(并列/嵌套)
文件名:首字母应该大写。若由若干单词组成,则每个单词首:大写,如: MyFirstJavaClass
方法、变量名:首字母应该小写。若由若干单词组成,则之后首字母大写。如: getName
五级句名目录结构:
com.
公司名
.
项目名
.
模块名
.
层级名
数据类型:
默认值
↓
byte bt1=0;// 1字节
short st1=0;// 2字节
int i1 =0;// 4字
long l1 =0;// 8字节
float f1 =0.0f;//4字节
double d1 = 0.0;//8字节
boolean b1 = false;//1字节
char c1=' ';// 2字节
1个字节=8位
字节(存储范围):一个字节代表8位二进制数。byte: 1个字节,不考虑负数能表示范围是:0~255,考虑正负表示范围:-128~127
//Ff Ll Dd 常量类型标志
String t1 = ""; //双引号里面可以有0个或多个字符
char c1 = '\u0000'; //单引号里面可以是字母 数字 或符号还有 转义字符 \n \t
\\
\'
\"
里面至少有一个符号可以是空格。
采用Unicode编码,每个字符在编码表里面都对应一个int整数。
\t小知识(\t :横向制表(HT) (跳到下一个TAB位置)。
\t是补全当前字符串长度到8的整数倍,最少1个最多8个空格,补多少要看你\t前字符串长度。
比如当前字符串长度10,那么\t后长度是16,也就是补6个空格。
如果当前字符串长度12,此时\t后长度是16,补4个空格。)
final:最终的意思,被
final
修饰的变量就是
“
常量”
常量被赋值之后就不能更改
错误信息:Cannot assign() a value to final variable 'num'
数据类型转换:
1、从低精度到高精度自动类型转换
2、从高精度到低精度需要强制类型转换,
可能会丢失精度
byte->short(char)->int->long->float->double 由低到高
要注意(short)10/10.2*2 和 (short) (10/10.2*2)的区别,前者只是把10强转为short。
单元测试:(可以单独运行,不用再在main方法中调用)
自加运算:
int b= a++;//相当于 int b =a; a=a+1;
先用后加
int c=++a
;
//
想当于
a=a+1
;
int c=a;
先加后用
***1、单独使用的时候,++、--在前后是没有差别的
2、被使用的时候,在前后是有差别的
运算符优先级:
赋值运算符:
b+=a;
相当于
b=b+a;
b -=a;
相当于
b=b-a;
特殊情况下不能转换:
short a=1
;
a+=2
;对 因为优化
a=a+2;
错
类型转换问题
2
是
int
类型
不能给
short
类型赋值
比较运算符:> < >= <= !=
比较之后的结果只有两种情况:true、false,所以比较运算的结果是boolean类型
& |
逻辑运算符:&& || ! 运算结果也是boolean类型
&&:两边的结果都是true,结果才是true
||:两边只要有一个是true,结果就是true
运算符优先级问题:
最高
:
.
调用运算符
()
[]
最低:赋值运算符
&&和||短路运算:
如果左半部分能将表达式的结果确定的话,右侧就不会执行了