如歌的java学习~~~每天都有进步

数组的创建及初始化(19)

public class 数组的创建及初始化 {
public static void main(String[] args) {
	int [] intarr=new int[1];
	String [] stringarr=new String [1] ;
	byte [] bytearr=new byte[1];
System.out.println("int类型的初始化:"+intarr[0]);
System.out.println("String类型的初始化:"+stringarr[0]);
System.out.println("byte类型的初始化:"+bytearr[0]);

int [] arr=new int [5];
arr[0]=1;
arr[1]=2;
arr[2]=3;
arr[3]=4;
arr[4]=5;
for(int a=0;a<arr.length;a++){
	System.out.println(arr[a]);
}
int [] arr1={1,2,3,4,5,6,7,8,9};
for(int a=0;a<arr1.length;a++){
	System.out.print(arr1[a]);
}

}
}


如何使用数组(20)

public class 冒泡排序 {
	public static void main(String [] args){
		int a[] = {1,2,3,3,4,5,6,4,3,2,1,3,4,3,5,7,7,5};
		int temp=0;  
	    for(int i=0;i<a.length-1;i++){  
	        for(int j=0;j<a.length-1-i;j++){  
	        if(a[j]>a[j+1]){  
	            temp=a[j];  
	            a[j]=a[j+1];  
	            a[j+1]=temp;  
	        }  
	        }  
	    }  
	    for(int i=0;i<a.length;i++)  
	        System.out.println(a[i]);     
	}
}

多维数组(21)

多维数组就是数组嵌套数组

public class 二位数组初始化及遍历 {
public static void main(String[] args) {
	//二位数组的初始化
	int [][] a={
			{1,1,1,1},
			{2,2,2,2},
			{3,3,3,3},
	};
	//二位数组的遍历
	for(int b=0;b<a.length;b++){
		for(int c=0;c<a[b].length;c++)
		{
			System.out.print(a[b][c]);
		}
		System.out.println();
	}

}
}


类的一般形式(22)

变量修饰符:public、protected、private、和默认(frieddlly)

public 公共访问控制符 指定该变量为公共的 他可以被任何对象方法访问

private私有访问控制符  指定变量只允许自己类的方法访问 其他任何类 (包括子类)中的方法都不能访问呢这个变量

protected 保护访问控制符 指定此变量只允许被他自己的类或者同一个中的其他类访问  在子类中可以覆盖此方法

默认(无修饰符)在本类或者同一个包中有效

static  静态修饰符 指定不需要实例一个对象就可以激活的方法

abstract 抽象修饰类 指定该方法只声明方法头 没有方法体 抽象方法需要在子类中实现

方法与主方法(23)

方法:如果方法没有有返回值,必须写void

如果有返回值,定义的方法类型必须和返回值类型一致。

Java的主方法:public static void main(String args[])

public:表示最大的权限,所有的对象都可以使用

static:表示可以由类名直接调用,主方法是程序的入口,它的调用不必经过类的实例化,所以要有static关键字修饰

void:表示返回值为空,主方法是一切的起点,不能返回重来,所以没有返回值

main:main是系统内建的名称

args[]:字符串数组用于接收参数,参数之间用空格隔开

java 类名 参数1 参数2 参数3编译和执行函数后3个参数便存在了args[]数组中,在主方法中可以调用,对于本身存在空格的参数,加上双引号,作为一个参数传递。



线程的基本知识(53)

线程和进程

线程:轻量级的进程

进程:执行中的程序

线程本身不能单独运行,必须放在一个进程中才能执行!

java 的线程模型

  1. 新建状态       线程被创建之后就处于新建状态
  2. 就绪状态       新建状态的线程调用start()方法进入就绪状态;阻塞状态的线程接触阻塞之后进入就绪状态
  3. 运行状态       处于就绪状态的线程,获得cpu的资源,该线程就进入了运行状态。
  4. 阻塞状态       一个正在运行的线程,因为一些原因让出了cpu的资源暂时中止而进入的状态。
  5. 终止状态       正常中止;强制中止:stop,destory,system.exit ;异常中止:当线程执行过程中,产生了异常,线程会中止。

继承thread类创建线程(54)

package com.jdbc.connection;

public class 线程1 extends Thread{
public void run(){
	for(int a=1;a<100;a++){
		
		try {
			Thread.sleep(100);
			System.out.println("线程"+a);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}
	public static void main(String[] args) throws InterruptedException {
		线程1 qq= new 线程1();
		qq.start();	
		for(int i=0;i<100;i++){
			Thread.sleep(100);
			System.out.println("主线程"+i);
		}
		//qq.run();			//单线程调用main方法
				//调用多线程,进入就绪状态,等待cpu分配资源
		System.out.println("线程执行完毕");
	}
	
}

实现Runnable接口创建线程(56)

public class 线程实现runable implements  Runnable {
	public void run() {
		for(int i=0;i<100;i++){
			try {
				Thread.sleep(100);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			System.out.println("这是线程"+i);
		}
	}
	
	
	public static void main(String[] args) {
		线程实现runable a= new 线程实现runable();
		
		Thread thread=new Thread(a);
		thread.start();
		
		for(int i=0;i<100;i++){
			try {
				Thread.sleep(100);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			System.out.println("这是主线程"+i);
			
	}
}
}
 

多线程应用(57)

public class 多线程应用1 implements  Runnable{
	public void run() {
		for(int a=0;a<100;a++){
			try {
				Thread.sleep(100);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			System.out.println("*");
		}
	
	}
	
}

public class 多线程应用2 implements Runnable {
	public void run() {
		for(int a=0;a<100;a++){
			try {
				Thread.sleep(100);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			System.out.println("#");
		}
	}

}

public class 多线程应用测试 {
public static void main(String[] args) {
	多线程应用1 d1=new 多线程应用1();
	多线程应用2 d2=new 多线程应用2();
	
	Thread t1=new Thread(d1);
	Thread t2=new Thread(d2);
      System.out.println("-----t1------"+t1.getPriority());
      System.out.println("------t2-----"+t1.getPriority());
      t1.setPriority(9);
      t2.setPriority(1);
      System.out.println("-----t1------"+t1.getPriority());
      System.out.println("------t2-----"+t2.getPriority());
        t1.start();
	 t2.start();
}
}

1.多个线程并发执行

java对于每个线程能保证的是每个线程都能被启动与停止,但是对于那个线程先执行,那个线程后执行是没有保证的。

2.线程优先级

java中优先级高的线程有更大的可能性获取CUP,但不是优先级高的总是先执行,也不是优先级低的总不执行。

线程的调度(58)

1休息方法sleep(毫秒数),sleep(毫秒数,纳秒数)

2暂停方法yield()  a.yield    是a释放后资源大家一起来抢

3挂起方法join()

public class 线程的调度 {
public static void main(String[] args) throws InterruptedException {
	/*thread1 t1=new thread1();
	Thread tt=new Thread(t1);
		tt.start();	*/
	thread2 t2=new thread2();
	Thread ttt=new Thread(t2);
		ttt.start();
		for(int j=0;j<100;j++){
			System.out.print("#");
			if(j==5){
				thread1.join();	
			}
		}

}
static class thread1 implements Runnable{
	public void run() {
		for(int a=0;a<100;a++){
			System.out.println("我是第"+a+"个数");
			try {
				Thread.sleep(1000);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		
	}

	public static void join() {
		// TODO Auto-generated method stub
		
	}
}

static class thread2 implements Runnable{

	public void run() {
		for(int i=0;i<100;i++){
	System.out.print("*");
			}		
	}
	
}
}

线程同步问题的由来



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值