【学习记录】Java语言基础(1)

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中的计数变量因为是在循环中定义的,当时用循环结束后,会释放计数变量。

猜你喜欢

转载自blog.csdn.net/m0_38052500/article/details/88904333