黑马程序员-------java 基础知识

时间:2023-02-12 11:06:17
1、 基本数据类型的转换,掌握!!!

   Byte b;b+=10与b =b+10的区别,自动提升和强制转换的区别。

1)自动类型提升
     byte b = 5;
     int x =6;
     x = x + b;//b会自动提升为int类型进行运算


2)强制类型转换
   byte b = 6;
   b = b + 5;//报错
   b = (byte)b+5;//强制类型转换,强制将b+4的结果转换为byte类型,再赋值给b注意可能损失精度

2、运算符回顾掌握

算术运算符+ 、— 、*/ %

赋值运算符=+=-=*=/=,%=

关系运算符>、>=<<=!=

条件运算符&&、||、!&|^

位运算符(&|^~>><<<<<>>>

l 需要注意的是

&与&&(条件与、短路与)的区别:第一个操作数 为真时才判断第二个操作数。

|与||(条件或、短路或)的区别:第一个操作数为真时不再判断第二个操作数。

l   注意:按二级制进行操作、效率高。

     >>、>>>后者是无符号右移、右移时符号位填充的都是0

    y<x相当于乘以2x次方

Y<x相当于除以2x次方

^符号的作用(加密……、一个数异或一个数两次还是原来的数)。

l 三元运算符(?:)

格式

•   (条件表达式)?表达式1:表达式2

•   如果条件为true,运算后的结果是表达式1

•   如果条件为false,运算后的结果是表达式2

3、字符串和任何数据都是用+号相连,最终都会变为字符串

例:System.out.Print(5+5+=+5+5);

//转义字符\的应用(\n回车符 \b退格 \r回车键 \t制表符 )

4、对两个整数变量的值进行互换的方法。

通过第三方变量

Inttemp = n;

n = m;

m = temp;

异或方法(n = n^m ; m = n^m ; n = n^m)、

n = n ^ m;

m = n ^ m;//(n^m)^m;

n = n ^ m;//n ^ (n ^ m)

加减法(当int值大时容易溢出)

n = n + m;//如果nm的值非常大,容易超出int范围。

m = n - m;

n = n - m;

最长用的还是通过第三方变量

5、进制转换

二进制(binary)、八进制( octonary)、十六进制(hexadecimal

进制的由来.......

十进制转二进制、八进制、十六进制代码实现:

class TransDemo {

public static void main(String[] args) {

trans(60,2);//调用转换方法

}

static void trans(int a,int radix){

int temp = a;

char [] cha = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};//查表法,所以建一个数组存储所用到的字符

StringBuilder sb = new StringBuilder();//字符串容器

while(a>0){

sb.insert(0, cha[a%radix]);//循环过程中,在容器的0位置插入,容器长 度加一

  a>>=(int)(Math.log(radix)/Math.log(2));//获取位移位数,二进制为1,八进制为3,十六进制为4

}

System.out.println(temp+"转换为"+radix+"进制为"+sb.toString());

}

  

}

6、java中的控制语句

判断语句、循环语句、选择语句

Ø 判断语句

If语句的三种格式:

If( 条件语句condition ){

代码块 statement//加上大括号用于执行多条语句

}

——————————

If(  condition){

statement

}else{

statement

}

——————————

If( ){

}else if( ){

} else{

}

Ø 循环语句(forwhiledo while

For(初始化表达式;判断表达式;修改循环变量值){

statement

}

While(条件表达式){

循环代码块

}

Do{

循环代码块

}while(条件表达式)

² For(;;){//最简单的无限循环,条件默认为true

}

² do while 先执行一次再判断

² For与while的区别:基本可以通用,但是一点,for内定义的变量,出了代码块,内存就将其释放,节约内存。

Ø 选择语句(switch

格式:switch(标签)//整数或枚举类型

{

Case  标签:statementbreak

Case  标签:statementbreak

Case  标签:statementbreak

Default :statement

}

² 注意:switch的执行顺序和有无break的区别,代码:

{

public static void main(String[] args)

{

show(0);//打印的是15

show(1);//打印的是14

}

public static void show(int i)

{

switch(i)

{

default:

i+=2;

case 1:

i+=1;

case 4:

i+=8;

case 2:

i+=4;

}

System.out.println("i="+i);

}

}

Ø break和continue

1)Break(中断控制流程语句):

用于跳出其所在的最内层的循环体;

带标签的可以跳出多重循环体,伪代码

abc :

For(...){

While( ...){

If( ...) break abc;

....

}

}

2)continue语句不跳出所在的循环体,而是中断执行当前循环的剩余部分,并进入下一轮循环。

求解:0~100之间偶数的和

代码如下

Public class SumDemo{

Int sum = 0;

For( int i = 0;i<= 100;i+=){

If(i%2!=0)

  Continue;

Sum+=i;

}

System.out.println(sum);

}

7、数组

数组的初始化:

静态初始化:

第一种方式:int[] arr = {1,2,3,4,5}

第二种:int[] arr1 = new int[]{1,2,3,4,5}

动态初始化:

就是new出一个数组后,再用add方法添加

l 数组长度一经初始化不可改变。

l 数组的长度是属性arr.length//打印长度为5

l 二维数组

Int[][] arra = {{1,2,34},{5,67}{234,57}}

     int[][] arr2 = new int[3][ 3]

      理解为数组的数组,arr2中有3个一维数组元素,每个数组元素又有三个子元素。把他想做指针就容易理解了。

 

总结

代码练习不多,但是不能放松,对于java的概述、switch语句、理论性知识要牢记熟练掌握不足