Day 02(其他人看是不存任何价值的!)
1、关键字:被语言赋予特定含义的单词叫做 关键字。
2、标识符:命名规则:只能用数字。字母、下划线与美元符号组成且不能用数字开头。
且标识符是区分大小写的,且标识符含类名,驼峰定义法。
3、字面值:可以直接看到是多少的数据。
分类有:整数、字符串 ······ ;引入变量 。
(编译与运行两个换环节)
C:\Users\Bios\Desktop>Javac Test.java
C:\Users\Bios\Desktop>Java Test.class
错误: 找不到或无法加载主类 Test.class
原因: java.lang.ClassNotFoundException: Test.class
C:\Users\Bios\Desktop>Java Test
Monkey
100
3.15
c
true
C:\Users\Bios\Desktop>
4、变量:在程序执行过程中,在某个范围内其值可以发生变化的量。
如何定义: 数据类型 变量名 = 变量值;
或者: 数据类型 变量名;
变量名 = 变量值。
在修改变量的值时,不需要重新声明,在同一个域中(同一个大括号中——类级别的大括号),变量名不能重复
5、java基本数据类型(区别去引用数据类型)
四类八种:整数型:byte,short,long,int。
浮点型:float;fouble
字符型:char
布尔型:bool
关于整数型long的使用:long name = 111111111111L;
程序默认将整数看做是int类型,正确的做法是在整数后 加上 大写字母L,以提醒程序。
自动类型转换的情况:低等级类型可以向高等级转换;高等级不可向低等级转换。
强制类型转换:容量大的向容量小的转换时,需要在变量名前加上(int)。但由于可能会损失精度,
所以不建议使用。
需要注意的是:给byte类型赋值时。需要注意取值范围。 —— 128;
自动转换的条件: ① 是否在转换双方类型的要求范围内:② 小容量向大容量转换 ;
6、浮点型:float (4字节) double (8字节)
精确度无法处理 金融中的数据,而是 BigDecimal。
与整数类型一样,程序默认数据是int一般;浮点中默认是double。
float a = 1.2F
或者强制转换:float a = (float)1.2
7、布尔类型:boolen 取值范围 两种:true false
主要用于逻辑运算和条件判断中。
8、char类型:0-65535。
char = ‘a’;char = “小” 可以定义一个汉字。
如果将字符对象初始化为数字,且如果是两位数,则会根据ASCii码对应到相应的字符。
特殊的三个:97——a 65——A 48——0。
如果想要将单引号赋给字符变量 ,需要用到转义字符。
比如 char r = ‘ \ ' ’;
制表符 是:char c2 = ‘ \t ’ ;换行 \n 反斜杠 字母;
println 是包含 输入与换行两个功能的。
9、数据基本类型的一些问题与总结:
不兼容的类型,程序运行的时候,会将两个byte类型变量转换为int类型,然后再做加法运算。
因此要对两个byte类型执行相加操作,需要在最后的结果声明之前进行 强制转换。(byte)
在这个小章节中需要重申的两点是:+ 加运算 要先将左右变量同意转换为int类型后,再执行加和的操作、。
另,一个原则:自动转换的条件: ① 是否在转换双方类型的要求范围内:② 小容量向大容量转换 ;
public class DataType04{
public static void main(String[] args){
byte b1 = 4;
byte b2 = 5;
byte b3 = (byte)(b1 + b2);
// 先转化为两个int变量再加和得到一个int变量,最后强制转化为byte类型。
System.out.println(b3);
byte b4 = 10;
short s1 = 5;
int i1 = b4 + s1;
// 还是同样的,先转化Wie两个int类型,加和后得到的即是int类型。
System.out.println(i1);
char c1 = 'a' ; //97
int i2 = c1 + 100;
// 同样的,cahr类型先转转为int类型。
System.out.println(i2);
System.out.println(byte);
}
}
总结转换规则:
1.、8种类型中除了boolean 类型之外都可以进行转换。
2、小容量向大容量转换叫做自动类型转换;
byte < short(char) < int < long < float < double ;
3、byte,short , char 做混合运算的时候,会各自先都转换为int在做运算。
4、大容量向小容量转化时,就是强制转换,需要加强制转换符号;
编译虽然能够通过,运行期间可能损失精度,谨慎使用。
5、如果整数没有超过byte,short,char的取值精度,可以直接将这个整数赋值给byte,short,cha
6、多种数据类型做混合运算,先转换成容量最大的那种再给与运算。
10、算术运算符:
//整数相除只能得到整数,如果想要得到小数,需要使用浮点型。
public class Operateor{
public static void main(String[] args){
int a = 10;
float b = 3;
float c = a / b;
float d = a % b;
System.out.println(c);//3
System.out.println(d);//1
}
}
算术运算符自加自减:
public class Operateor{
public static void main(String[] args){
int a = 10;
++a;//a = a + 1
System.out.println(a);
int b = 7;
b++;
System.out.println(b);
int c = 1;
--c;
System.out.println(c);
int d = 3;
d--;
System.out.println(d);
/*
自增或自减运算符在变量的前后有什么区别;
单独使用:没有区别;
参与运算时:如果放在变量的前面,则先进行自增或自减再参与运算;
如果放在后面,则先参与运算,然后再进行自增或自减。
运算顺序是 是从左到右的;
*/
int k = 8;
int j = ++k;
System.out.println(j);
System.out.println(k);
int k1 = 8;
int j1 = k1++;
System.out.println(j1);
System.out.println(k1);
int q = 10;
System.out.println(++q);//11
int q1 = 10;
System.out.println(q1++);//10
System.out.println(q1);//11
}
}
Java中运算顺序是先运算括号里面的,再括号外面的,按照从左到右的顺序进行计算。
11、算术运算符相关的面试题:
这个题中我认为x 在第一个括号内计算的到的结果应该是 5;但是是4;多少有点区别吧;
结果其实是 0;
小知识:javap;
-c 对代码进行反汇编。
12、赋值运算符;
class Operator02{
public static void main(String[] args){
int a = 10;
a += 10;// a = a + 10
System.out.println(a);
a -= 5;
System.out.println(a);
a /= 15;
System.out.println(a);
a %= 2;
System.out.println(a);
byte b = 10;
//b = b + 10; can wrong
b += 10;//But 扩展运算符在进行运算时,不会改变其类型的。最好还是不要这么写,可能损失精度。
}
}
损失精度,也就是超过了最后赋值变量的取值范围;
13、关系运算符
== ; != ; < ; > ;<= ; >= 。
14、布尔运算符
& 逻辑与 两边都是true,结果是true
| 逻辑或 一边是true,结果就是true
! 逻辑非 取反 !true –> false
^ 逻辑异或 两边只要是不一致就是true
&& 短路与 用法和 & 一样。
|| 短路或 用法和 | 一样;
————————————————————
&&和&的区别?
* &&具有短路效果。如果左边结果是false,则右边不执行。
* &是无论左边是false还是true,右边都会执行。
开发中常用&&和||,如果当需求要求无论左边的表达式是true还是false,右边的表达式必须执行,此时必须使用逻辑与,短路与做不到。
————————————————————
注意事项:
* 布尔运算符两边的算子必须是布尔类型,整个表达式的运算结果也是一个布尔类型。
15、使用EditPlus来运行与编译;
ctrl + 1 编译;ctrl + 2 运行;
16、加法连接运算符
① 如果两边都是数值型,则进行加法运算;
② 如果两边任意一边是字符串型,则进行字符串连接运算。
17、三元运算符(三目)
boolean表达式 ? 表达式1:表达式2;
如果boolean表达式的值时true时,则返回表达式1;否则返回表达式2;
class Operator03 {
public static void main(String[] args) {
int a = 10;
int b = 20;
int d = (a < b) ? a : b;
System.out.println(d);
}
}
三目运算符的一个练习。
18、位运算符
主要用于操作二进制的数据;
& :两个 1 则 1 ;
|:有 1 则 1;
^ : 想同则 1 不同为0;
——这里的反码,补码,原码 不了解,暂时不进行了解——
几个练习:
1 、不使用第三方变量 进行变量值的交换;
class Operator03 {
public static void main(String[] args) {
int a = 10;
int b = 24;
a = a + b;
b = a - b;
a = a - b;
/*
a = a ^ b;
b = a ^ b;// a ^ b ^ b ,b=a
a = a ^ b;// a ^ b ^ a,a = b
// ^的特点:一个数据对另一个数据位异或两次,该数本身不变。
*/
System.out.println(a);
System.out.println(b);
}
}
优缺点,如果加和超过了 int类型的取值范围,则有可能损失精度。
^的特点:一个数据对另一个数据位异或两次,该数本身不变。
02 最有效率的算出2*8;
19、控制语句:
class Operator03 {
public static void main(String[] args) {
boolean isSuccess = false ;
int x = 1;
if (isSuccess){
System.out.println("登录成功");
}else if(x==1){
System.out.println("^^^^^^^");
}else{
System.out.println("%$^%%$^%$");
}
int score = 90;
if (score>90 & score <= 100){
System.out.println("youxiu");
}else if(score>80 & score <= 90){
System.out.println("buxinga");
}
switch(score / 10){
case 9:
System.out.println("it's you !");
break;
default:
System.out.println("lost one!");
}
//_________________________
int month = 3;
switch(month){
case 3:
case 4:
case 5:
System.out.println("eryue2");
break;
case 6:
case 7:
case 8:
System.out.println("eryue3");
break;
case 9:
case 10:
case 11:
System.out.println("eryue4");
break;
case 12:
case 1:
case 2:
System.out.println("eryue1");
break;
default:
System.out.println("请输入正常的月份");
}
}
switch:注意:
1、程序遇到break就停止了,break可以不写,如果不写,会发生case穿透;
2、default 也可以不写;
3、switch后可以放 byte short cahr int ————只要可以转成int类型的都可以;
jdk7.0后 又增加了string类型。
20、for循环
for (初始化的表达式;条件表达式;循环之后的表达式){
java语句;
}
1.、执行初始化的表达式,并且在整个循环中只执行;
2、将初始化的表达式的值在条件表达式里面进行判断;
如果结果true,则循环程序继续执行;false则是结束执行;
3.、java语句;
4、执行循环之后的表达式;
5、程序再回到第二步继续执行。
for (int i = 5; i > 0 ;i-- ){
System.out.println("helloworld2");
}
for (int i = 0; i < 5 ;i++ ){
System.out.println("helloworld1");
}
重要的是:判断条件处理好;
另外,如果java语句只有一个,那么可以将大括号去掉;
for循环嵌套的两个练习不再续写;
println() == print(“\n”)
21、while循环
while(boolean表达式){
循环语句
控制条件语句
}
do{
循环语句
控制条件语句
}while(判断条件语句)
与for循环不同的是,初始化的循环计数变量需要在for的括号中初始化声明。
22、三种循环的区别:
do 语句至少执行一次;
for与while 通常如果不满足进入条件,那一次都不会执行;
通常 for最常用;另外,for中的计数变量因为是在循环中定义的,当时用循环结束后,会释放计数变量。