现在的位置: 首页 > 综合 > 正文

java基础01

2018年06月08日 ⁄ 综合 ⁄ 共 6317字 ⁄ 字号 评论关闭

 

 运算符的优先级:

下图最上面为最高位,最下面是最低位

很值得看的是这几个经典的:

int  a=2; int b=a+3*a++;请问的是这里b的值是多少呢我得出的结果是8其实在这++是执行了的。

        但是是在赋值给了b过后执行的的以结果是8而不是11但是a的本身的值是不会改变的。

int a=2; int  b =(a++)+3*a;这里b又等于多少呢?我的结果是11。这里优先运算()然后再执行3*a 

 所以3*a这里a的值是++了过后也就是3但是++并没有改变a本身的值所以在后面相加的时候 a的值仍是2

对于这个只有建议多在里面加法的过程中使用括号有来提高代码的可读性。

程序的流程控制:

顺序结构           选择结构        循环结构

顺序结构:

              就是不加任何的判断跳转语句,代码一行一行的目执行直到程序结束。

if条件语句:

if语句是最普遍的条件语句

其格式有三种:

第一种格式:

if(Conditional statement){execution statement}

   这种格式是当条件满足时执行执行语句,但是当条件语句不满足时会通过编译便是在运行class文件是会报错。

第二种格式:

if (Conditional statement)
{
 execution statement1
}
else
{
 execution statement2
}

第二种格式相对于第一种格式来说要人性化多了当if满足条件时执行语句块1当不满足条件时执行语句2.

第三种格式:

if (Conditional statement1)
{
 execution statement1
}
else if(Conditional statement2)
{
 execution statement2
}

. . .  
else if(Conditional statement  n次)
{
 execution statement n
}

else

{

execution statement n+1

}

利用上面的格式来做一个判断春夏秋冬的程序

class  ifdemo//这是我利用if来做的一个春夏秋冬判别的小程序
{
	public static void main(String[] args) 
	{
		//在这里我们定义3,4,5月为春天6,7,8月为夏天9,10,11为秋天12,1,2为冬秋 不是这些值为输入错误
		int x=13;
		/*
		首先我们把>12<1的情况排除之间得用或双或连接这样做主要是为了简化代码如果我们一个条件写一个代码
		这样就出现了代码的臃肿看起来很不爽所以我们就可以利用||来做这个当然也可以用&&自由选择
	     这里使用||主要是他满足左条件就不判断右边的好处所以我选择了||而没用|在后面定义三个月 为一个季度的时候 也会用到这个符号
		*/
		if (x>12||x<1)
		{
		System.out.println("I'm sorry the input error please enter again");
		}
		else if (x==3||x==4||x==5)
		{
		System.out.println(x+"Month is spring");
		}
       else if (x==6||x==7||x==8)
		{
		System.out.println(x+"Month is summer");
		}
      else if (x==9||x==10||x==11)
		{
		System.out.println(x+"Month is autumn");
        }
     else
		{
		System.out.println(x+"Month is winter");
		}
	}
}
//if() else if()其括号后的表达示结果必须为布尔型(即结果为ture或false)

switch选择语句:

   switch语句用于一个表达示的值一多个其他的值相比较

switch语句判断条件只可以接收int ,byte ,char, short型不可以接收其他类型。

default语句是可选的他是接受除上面接受的值以外其他值。其他的都不管他的事

switch语句碰到case就会匹配但是无论是否匹配程序都 会继续执行直到遇到break或程序结束为止

每个cass后面都会且个break退出程序   还有需要记住程序会执行直到遇到break才会结束

这个可以用来处理多个cass语句的情况 。

expression and 表达示    value 取值      statemet 语句

switch语句格式:

switch (Expression and)
{
case value1:

     statement1

      break;

case valuen n次:

     statement2

   break;

default:

   statement n+1

   break;

}

利用switch语句判断是周几

class switchdemo //这是我利用switch做的一个判断周几的小程序
{
	public static void main(String[] args) 
	{
		/*其实这里就是利用了switch比if好的一个特性就是表达示的一个值可以与多个值相比较
		在这里需要记住的是break是跳出语句第一个case必须对应一个break
		然后在default表示除了上面的值外的所有值。后面可以不加break因为那里隐藏了一个break
		还有值得注意的是一个switch对应多个case必须的在一个{}内*/
		int x=1;
		switch (x)
		{
		case 1:
		System.out.println("monday");
		break;
		case 2:	
		System.out.println("tuseday");
		break;
		case 3:	
		System.out.println("wednesday");
		break;
		case 4:
		System.out.println("thursday");
		break;
		case 5:
		System.out.println("friday");
		break;
		case 6:
		System.out.println("staturday");
		break;
		case 7:
		System.out.println("sunday");
        break;
		default :
          System.out.println("sorry,You of the input value is not correct");
	}
 }
}//程序过程中希望注意的是代码符号的中英文写  符号   一定要用英文写呵呵因为我刚就出了这样的错语

顺便值得一说的是:else和case的区别

else后面跟的是执行语句,但是case后面跟的是匹配语句如果不能匹配就不会执行

while循环语句:

wehile是循环语句也是条件判断语句格式如下

第一种格式

while (条件表达示语句)
{

执行语句
}

class whiledemo
{
public static void main(String[] args) 
	{
	int x=3;
	while (x==3)
	{System.out.println("x=3");
	}
	
 }}//这是一个无限循环

class whiledemo
{
public static void main(String[] args) 
	{
	int x=3;
	while (x==3);
	System.out.println("x=3");
		
 }}//这是一个无限循环
需要知道的是两种格式的区别。如果说while后面没加{}在while()后面一定要加;加了{}则可以不加
需要跳出需要加  break;

第二种格式

do
{

执行语句
}
while (条件表达语句);

其实do while语句和while语句是差不多的不过do while语句在任何情况下执行语句都会执行一次。

而while则要在满足条件的情况下才会执行执行语句,还有一个区别就是在do while 的while后面只能是

while( ); 而不能是while( ){ }

for循环:

for循环的语句基本格式:

for(初始化表达示;循环条件表达示;循环后操作表达示)

   执行语句

  }

class fordemo 
{
	public static void main(String[] args) 
	{
		for (int x=0;x<10 ;System.out.println(x++) )
		{
		}
		}
}

for循环可以在循环后操作语句中加入print语句但是需要注意的是一定要加后面的{}否则报错


 

class fordemo1 
{
	public static void main(String[] args) 
	{
		int x=0;
		for (;x<10 ; )
		{
			System.out.println(x);
		x++;
		}
           
  }//这是一个别样的for循环这里初始化表达示为默认的x而且循环后的操作x++
    //这里可以说是先printx当x满足x<10就print
这执行这个程序的时候我无意中发现其实我们也可以用这种方法来获取这些数里面的偶数和奇数
但是也有一定的条件限制首先我们要查看的数必须是自然顺序而且我们必须知道第一个奇数获偶
数是多少。然后我们将这个值赋值给变量然后执行就是了
class fordemo 
{
	public static void main(String[] args) 
	{
		int x=0;//这里x的值是偶数那么就会获取0-10之间偶数的值如果是奇数就获取奇数的值
		for (;x<10 ; )
		{
			System.out.println(x++);
		x++;
//这里可以说是对x进行了一个+2的操作
		}
		}
}
但是如果我们将System.out.println(x++);
             x++;改成下面的代码的话就会一直print  x+2 会出现死循环。这是值得注意的
	int x=1;
		for (;x<10 ; )
		{
			System.out.println(x+2);
//这里就是一个无限循环,在这里x<10已经可以不要了 在这里简单的来说for的作用仅仅只是一个循环代码了。我们如果将x<10去掉他还是会无限print
       x+2的值。这里for简单的说就是一个循环而没有任何条件。这里也就是for的无限循环语句
同样的意义的还有while(true)也是无限循环需要break语句跳出循环还有很多有趣的代码

class fordemo 
{
	public static void main(String[] args) 
	{
		int x=1;
		for (; ; )
		{
	
		if (x<10)
		
			x++;
	System.out.println(x);	
	
		}
//比如说上面这段代码先print然后一直循环print10当然还有一些是可以做到print后就死循环什么也不做
     面对这些语句我们就应该充分的利用break退出循环了。

break语句和contiue语句:

break为中断循环语句和switch语句一个无标号的break语句会把控制传给当前最内循环(while,do,for.switch)

的下一条语句。如果有标识就传给当前方法中带这个标识的语句

st:while (true)
  {
 while (true)

 break st;
  }
 }
}
比如这样就是就跳出了st标识的这个无限循环。但是如果不使用标识这里只人跳出内循环

contiue语句:

只能出现在while ,do,for的子语句块中无标识的contiue语句的作用只是跳过当前循环的余语句块执行下一个循环。

数组:

数组的基本概念:

定义格式:        int []  array1=new int[3];定义一个元素个数为3的数组

                         int []  array2=new int[]{1,2,3};定义数组并给其元素赋值

                          int []  array3={1,2,3};数组的静态初始化(也就是定义数组的同时为数组元素分配空间并赋值)

                          int []x;//方括号位于变量名之前也是可以的

                          new int[100]这里面每个元素产生的值的初始化值都为0

      注意:在java语言中无论用任何方式定义数组都不能指定长度

                 在数组的调用中需要有元素才能调用否则会出现null异常。

                如果调用的角标超过了数组角标长度会出现越界异常。因些这样就要使用.length获取数组长度

多维数组;

  int x[2][3]这就是一个2*3形式的二维数组

布局如下:                          x[0][]---->x[0][0]|x[0][1]|x[0][2]         

                                            x[1][]---->x[1][0]|x[1][1]|x[1][2]在这里我用|符号来做了一个格子的分格符

其实多维数组与一维数组一样在定义的时候都不能指定其长度

int x[3][2]={{3,2},{4,5},{6,9}}这样在编译时会了报错

一些与数组相关的操作:

System.out.println(arr);打印二维数组的地址值

System.out.println(arr[0]);打印二维数组的一维地址值。

System.out.println(arr[][]);打印二维数组的一个对应元素。

System.out.println(arr.length);打印二维数组的长度,其实就是一维数组的个数。

System.out.println(arr[1].length);打印二维数组中角标为1的一维数组的长度。

关于一些复制的操作就不写在上面了需要可以jdk查找更加方便。

下面来练习一下获取数组中的最大值。

 

import java.util.*;//这里是在我学习数组的时候做的一个求最大值的程序
class  maxdemo
{
	public static void main(String[] args) 
	{//在这里我们先定义一个数组然后再定义一个变量并将0角标的值赋值给他
		int x[ ] ={1,6,6,7,5,8,9,12};
		int a=x[0];
//这里我们对角标进行一个遍历并且在遍历过程中利用a这个变量来比较每个角标的值当b+1这个角标大于b时就将x[b]的值赋给a不满足则不管继续遍历这样遍历完了
          数组的maximum也就出来了然后print   a就可以了a就是最大值 。
		for (int b=0;b<x.length ;b++ )
		{
			if(x[b]>a)
			{
				a=x[b];
			}
		}
		System.out.println(a);
	}
关于数组还有很多的操作比如排序:
//这里是对数组进行了一个从大到小的排序
class testdemo
{
	public static void main(String[] args) 
	{
		int[ ] a={7,5,1,4,4,6,7,2,7};
		//这里利用了for嵌套循环对各个角标的值进行判断在判断过程中如果遇到比本身小的值就不改变角标位置
		//如果后面一个角标的值比本身大或相等那么就将这个角标的值赋值给另一个变量然后由这个变量来对这个值的角标位置来进行交换
		
		for (int b=0;b<a.length ;b++ )
		{
			for (int c=0;c<a.length-b-1;c++ )
			{
				
				if (a[c]<a[c++])//如果需要从小到大排序只需要把这里的<改成>即可这里也可以改成<=或>=
				{
                           //这里是对后面一个角标大于前面一个角标的值进行交换的代码
					int d=a[c++];
					a[c++]=a[c];
					a[c]=d;
				}
			}
	}
		//这里是对新的数组进行一次遍历并print后面的“   ”是为了分隔各个元素
		for (int e=0;e<a.length ;e++ )
		{
			System.out.print(a[e]+"  ");
		}
	}
}
 
 


【上篇】
【下篇】

抱歉!评论已关闭.