JAVASE_day06进程和线程(1)

Java零基础之多线程篇:多线程最佳实践 在计算机科学领域,多线程是一种重要的编程概念。它允许程序同时执行多个任务,提高了程序的并发性响应性。对于Java开发者而言,了解掌握多线程编程是非常重要的一项技能。本文将从零基础开始介绍Java多线程的概念用法,帮助读者理解多线程的原理实践技巧。我们将深入探讨多线程的最佳实践,包括源代码解析、应用场景案例、优缺点分析具体的Java代码测试用例。本文将带领读者逐步学习Java多线程编程的基础知识高级概念。我们将通过详细的源代码解析实际应用场景案例,帮助读者理解多线程的内部工作原理使用技巧。 阅读详情

并行和并发:


进程和线程:


多线程的优势:


JAVA中创建进程的方式:

package com.anonymous.javase.day06;

import java.io.IOException;
import java.util.List;

	/*java操作进程:
	在java代码中如何运行一个进程().
	方式1:Runtime类中的exec方法;
	方式2:ProcessBuilder类中的start方法:
	 */
public class Demo1 {
	public static void main(String[] args) throws IOException {
		//方式1:启动Runtime的exec方法
		Runtime runtime = Runtime.getRuntime();
		runtime.exec("notepad");
		runtime.exec("calc");
		
		//方式2:ProcessBuilder的start
		ProcessBuilder builder = new ProcessBuilder("notepad");
		builder.start();
	}
}

java中创建线程的方式:

创建和启动线程,传统有两种方式: 方式1:继承Tread类; 方式2:实现Runnable接口; 线程类(java.lang.Tread):Tread类和Tread的子类才能称之为线程类, 主线程(main方法是主线程);

Thread继承方式:

package com.anonymous.javase.day06;

//继承和实现两种方式启动线程

//使用Thread方式
public class Demo2 extends Thread {
	/**
	 * 创建和启动线程,传统有两种方式: 方式1:继承Tread类; 方式2:实现Runnable接口;
	 * 线程类(java.lang.Tread):Tread类和Tread的子类才能称之为线程类, 主线程(main方法是主线程);
	 */

	@Override
	public void run() {
		for (int i = 1; i <= 50; i++) {
			System.out.println("打游戏!" + i);
		}
	}

	public static void main(String[] args) {
		for (int i = 1; i <= 50; i++) {
			System.out.println("敲代码!" + i);
			if (i == 10) {
				Demo2 demo2 = new Demo2();
				demo2.start();
			}
			/**
			 * 敲代码!1 敲代码!2 敲代码!3 敲代码!4 敲代码!5 敲代码!6 敲代码!7 敲代码!8 敲代码!9 敲代码!10
			 * 敲代码!11 敲代码!12 敲代码!13 敲代码!14 敲代码!15 敲代码!16 敲代码!17 敲代码!18 敲代码!19
			 * 敲代码!20 (<这里才开始让线程><>)打游戏!1 敲代码!21 打游戏!2 敲代码!22 打游戏!3 敲代码!23 打游戏!4 打游戏!5 敲代码!24
			 * 打游戏!6 打游戏!7 敲代码!25 打游戏!8 打游戏!9 敲代码!26 打游戏!10 敲代码!27 打游戏!11 敲代码!28
			 * 敲代码!29 打游戏!12 敲代码!30 打游戏!13 敲代码!31 打游戏!14 敲代码!32 打游戏!15 敲代码!33
			 * 打游戏!16 敲代码!34 打游戏!17 敲代码!35 敲代码!36 打游戏!18 敲代码!37 敲代码!38 打游戏!19
			 * 敲代码!39 打游戏!20 敲代码!40 打游戏!21 敲代码!41 打游戏!22 打游戏!23 打游戏!24 打游戏!25
			 * 打游戏!26 打游戏!27 打游戏!28 敲代码!42 打游戏!29 敲代码!43 打游戏!30 敲代码!44 打游戏!31
			 * 敲代码!45 打游戏!32 敲代码!46 打游戏!33 敲代码!47 打游戏!34 敲代码!48 打游戏!35 敲代码!49
			 * 打游戏!36 敲代码!50 打游戏!37 打游戏!38 打游戏!39 打游戏!40 打游戏!41 打游戏!42 打游戏!43
			 * 打游戏!44 打游戏!45 打游戏!46 打游戏!47 打游戏!48 打游戏!49 打游戏!50
			 */
		}
	}
}


Runnable实现方式:

package com.anonymous.javase.day06;

//使用Runnable
class Demo3 implements Runnable {

	@Override
	public void run() {
		for (int i = 1; i <= 50; i++) {
			System.out.println("运行中..." + i);
		}
	}

	public static void main(String[] args) {
		for (int i = 1; i <= 50; i++) {
			System.out.println("运行的方式..." + i);
			if (i == 20) {
				Runnable demo3 = new Demo3();
				Thread thread = new Thread(demo3);
				thread.start();
			}
			/**
			 * 运行的方式...1 运行的方式...2 运行的方式...3 运行的方式...4 运行的方式...5 运行的方式...6
			 * 运行的方式...7 运行的方式...8 运行的方式...9 运行的方式...10 运行的方式...11 运行的方式...12
			 * 运行的方式...13 运行的方式...14 运行的方式...15 运行的方式...16 运行的方式...17 运行的方式...18
			 * 运行的方式...19 运行的方式...20 运行的方式...21 运行的方式...22 运行的方式...23 运行的方式...24
			 * 运行的方式...25 <到25的时候才让出线程><>运行中...1 运行的方式...26 运行中...2 运行的方式...27 运行中...3
			 * 运行的方式...28 运行中...4 运行的方式...29 运行中...5 运行的方式...30 运行中...6
			 * 运行的方式...31 运行中...7 运行的方式...32 运行中...8 运行的方式...33 运行中...9
			 * 运行的方式...34 运行中...10 运行的方式...35 运行中...11 运行的方式...36 运行中...12
			 * 运行的方式...37 运行中...13 运行的方式...38 运行中...14 运行的方式...39 运行中...15
			 * 运行的方式...40 运行中...16 运行的方式...41 运行中...17 运行的方式...42 运行中...18
			 * 运行的方式...43 运行中...19 运行的方式...44 运行中...20 运行的方式...45 运行中...21
			 * 运行的方式...46 运行中...22 运行的方式...47 运行中...23 运行的方式...48 运行中...24
			 * 运行的方式...49 运行中...25 运行的方式...50 运行中...26 运行中...27 运行中...28
			 * 运行中...29 运行中...30 运行中...31 运行中...32 运行中...33 运行中...34 运行中...35
			 * 运行中...36 运行中...37 运行中...38 运行中...39 运行中...40 运行中...41 运行中...42
			 * 运行中...43 运行中...44 运行中...45 运行中...46 运行中...47 运行中...48 运行中...49
			 * 运行中...50
			 */
		}
	}
}

吃苹果案列:

package com.anonymous.javase.day06;

public class Demo5 implements Runnable {
	private int apple = 50;

	public static void main(String[] args) {
		Demo5 demo5 = new Demo5();
		new Thread(demo5, "小明").start();
		new Thread(demo5, "名").start();
		new Thread(demo5, "红").start();
	}

	@Override
	public void run() {

		for (int j = 50; j >= 0; j--) {
			if (apple > 0) {
				System.out.println(Thread.currentThread().getName() + "吃了"
						+ apple + "苹果");
				apple--;
			}
			/**
			 * 名吃了50苹果 红吃了50苹果 小明吃了50苹果 红吃了48苹果 名吃了49苹果 红吃了46苹果 红吃了44苹果 红吃了43苹果
			 * 小明吃了47苹果 小明吃了41苹果 小明吃了40苹果 小明吃了39苹果 小明吃了38苹果 小明吃了37苹果 小明吃了36苹果
			 * 小明吃了35苹果 小明吃了34苹果 小明吃了33苹果 小明吃了32苹果 小明吃了31苹果 小明吃了30苹果 小明吃了29苹果
			 * 小明吃了28苹果 红吃了42苹果 红吃了26苹果 名吃了45苹果 红吃了25苹果 小明吃了27苹果 红吃了23苹果 名吃了24苹果
			 * 红吃了21苹果 小明吃了22苹果 红吃了19苹果 名吃了20苹果 红吃了17苹果 小明吃了18苹果 红吃了15苹果 名吃了16苹果
			 * 红吃了13苹果 小明吃了14苹果 红吃了11苹果 名吃了12苹果 红吃了9苹果 小明吃了10苹果 小明吃了6苹果 小明吃了5苹果
			 * 小明吃了4苹果 小明吃了3苹果 红吃了7苹果 红吃了1苹果 名吃了8苹果 小明吃了2苹果
			 */
		}
	}
}


使用Thread.sleep(10).模拟网络延迟


package com.anonymous.javase.day06;

public class Demo5 implements Runnable {
	private int apple = 50;
	public static void main(String[] args) {
		Demo5 demo5 = new Demo5();
		new Thread(demo5,"小明").start();
		new Thread(demo5,"名").start();
		new Thread(demo5,"红").start();
	}

	@Override
	public void run() {
			
		for (int j = 50; j >=0; j--) {
			if (apple>0) {
				try{
					Thread.sleep(10);
				}catch(Exception e){
					e.printStackTrace();
				}
				System.out.println(Thread.currentThread().getName()+"吃了"+apple+"苹果");
				apple--;
		}
	}
	}
}

出现了负数

解决方案:有三种方式:


package com.anonymous.javase.day06;

public class Demo5 implements Runnable {
	private int apple = 50;
	public static void main(String[] args) {
		Demo5 demo5 = new Demo5();
		new Thread(demo5,"小明").start();
		new Thread(demo5,"名").start();
		new Thread(demo5,"红").start();
	}

	@Override
	public void run() {
			
		for (int j = 50; j >=0; j--) {
			synchronized (this) {//加上synchronized代码块
			if (apple>0) {
				try{
					Thread.sleep(10);
				}catch(Exception e){
					e.printStackTrace();
				}
				System.out.println(Thread.currentThread().getName()+"吃了"+apple+"苹果");
				apple--;
			}
		}
	}
	}
}

使用synchronized同步方法

package com.anonymous.javase.day06;

public class Demo5 implements Runnable {
	private int apple = 50;
	public static void main(String[] args) {
		Demo5 demo5 = new Demo5();
		new Thread(demo5,"小明").start();
		new Thread(demo5,"名").start();
		new Thread(demo5,"红").start();
	}

	@Override
	public void run() {
			
		for (int j = 50; j >=0; j--) {
			eat();
		}
	}
	//使用synchronized同步方法
	synchronized private  void eat(){
		if (apple>0) {
			try{
				Thread.sleep(10);
			}catch(Exception e){
				e.printStackTrace();
			}
			System.out.println(Thread.currentThread().getName()+"吃了"+apple+"苹果");
                apple--;}}}
                //Thread.currentThread().getName();获取当前线程的名称

使用同步锁机制:

package com.anonymous.javase.day06;

import java.util.concurrent.locks.ReentrantLock;

public class Demo5 implements Runnable {
	 private final ReentrantLock lock = new ReentrantLock();
	private int apple = 50;
	public static void main(String[] args) {
		Demo5 demo5 = new Demo5();
		new Thread(demo5,"小明").start();
		new Thread(demo5,"名").start();
		new Thread(demo5,"红").start();
	}

	@Override
	public void run() {
			
		for (int j = 50; j >=0; j--) {
			eat();
		}
	}
	//同步锁:(Lock)
	//Lock机制提供了比synchronized代码块和synchronized方法更广泛的确定性操作,
	//同步代码块/同步方法具有的功能都有,除此之外更加强大,更体现面对对象

	private  void eat(){
		 lock.lock();//获取锁
		 if (apple>0) {
			try{
				Thread.sleep(10);
				System.out.println(Thread.currentThread().getName()+"吃了"+apple+"苹果");
				apple--;
			}catch(Exception e){
				e.printStackTrace();
			}finally{
				lock.unlock();//释放锁
			}
		}
	}
}


package com.anonymous.javase.day06;

import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;


//生产者
class ProducerTest implements Runnable {
	private ShareDemo6 share = new ShareDemo6();
	
	public ProducerTest(ShareDemo6 share){
		this.share = share;
	}

	@Override
	public void run() {
		for (int i = 1; i <= 50 ; i++) {
			if (i % 2 == 0) {
				share.setArgs("JACK", "男");
			}else{
				share.setArgs("ROSE", "女");
			}
		}
	}
	
	
}


//消费者
class CustomerTest implements Runnable{
	private ShareDemo6 share = new ShareDemo6();
	public CustomerTest(ShareDemo6 share){
		this.share = share;
	}
	
	@Override
	public void run(){
		for (int i = 1; i <= 50; i++) {
			share.pass();
		}
	}
	
}
public class ShareDemo6 {
	private String name ;
	private String gender ;
	private boolean stauts = true ;//表示生产者生产数据为空 
	private Lock lock =new ReentrantLock();
	Condition con = lock.newCondition(); 

	
	//生产者生产数据
	 public void setArgs(String name,String gender){
		 lock.lock();
		try {
			if(!stauts){//
				con.await();
			}
			Thread.sleep(10);
			this.name = name;
			this.gender = gender;
			stauts = false;
			con.signal();
		} catch (InterruptedException e) {
			e.printStackTrace();
		}finally{
			lock.unlock();
		}
	}
	
	//消费者消费数据 
	 public void pass(){
		 lock.lock();
		try {
			if(stauts){
				con.await();
			}
			Thread.sleep(10);
			System.out.println(this.name+"_"+this.gender);
			stauts = true;
			con.signal();
		} catch (InterruptedException e) {
			e.printStackTrace();
		}finally{
			lock.unlock();
		}
	}
	public static void main(String[] args) {
		ShareDemo6 share = new ShareDemo6();
		new Thread(new ProducerTest(share)).start();
		new Thread(new CustomerTest(share)).start();
	}
}



线程的生命周期:






线程睡眠:

package com.anonymous.javase.day06;
public class Demo7 {
	//线程睡眠
	public static void main(String[] args) {
		for (int i = 1; i <= 20; i++) {
			try {
				Thread.sleep(1000);//毫秒数
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			System.out.println(i);
		}
	}
}



package com.anonymous.javase.day06;

//联合线程
class JoinThread extends Thread{
	public JoinThread(String name){
		super(name);
	}
	@Override
	public void run() {
		for (int i = 1; i <= 50; i++) {
			System.out.println(super.getName()+"join"+i);
		}
	}
}
public class Demo8 {
	/**
	 * 联合线程:
	 * 线程的join方法,表示一个线程等待另一个线程完成后才执行,join方法被调用之后,线程对象处于阻塞状态
	 * @throws InterruptedException 
	 */
	public static void main(String[] args) throws InterruptedException {
		JoinThread joinThread = new JoinThread("String");
		for (int i = 1; i <= 50; i++) {
			System.out.println("main线程"+i);
			if(i==5){
				joinThread.start();
			}
			if(i==20){//join()表示强制让出线程运行
				joinThread.join();
			}
		}
	}
}



package com.anonymous.javase.day06;

//后台线程

class DeamonTest extends Thread{
	@Override
	public void run() {
		for (int i = 1; i <= 500; i++) {
			System.out.println("杰克"+i);
		}
	}
}
public class Demo9 {
	public static void main(String[] args) {
		DeamonTest test = new DeamonTest();
		boolean daemon = test.isDaemon();
		System.out.println(daemon);
		for (int i = 1; i <= 50; i++) {
			System.out.println("main线程"+i);
			if (i==10) {
				test.setDaemon(true);
				test.start();
				System.out.println(test.isDaemon());
			}
		}
	}
}

HDMI设计2----EDID and E-EDID 1,EDID是什么?有什么用? 图1 应用场景 如图1所示的应用场景,PC将视频信号发送 到我们的设备上,经过一系列的传输切换,设备将视频信号发送到显示器或者投影机上,也就是说,我们的设备位于PC显示器之间。首先,在输入端,设备需要让PC知道自己是能够接受输入视频信号的,让PC认为自己是一台显示器。如果不这样做的话,PC可能会拒绝输出任何视频信号的(VGA接口不需要EDID也能输出)。除此之外,设备还要告诉PC自己支持的显示时序。而在输出端,当设备需要自建输出时序而不是简单的复制... 阅读详情

相关推荐

你知道几种数字地与模拟地连接方式及优缺点?

频率选择性:磁珠的阻抗特性随频率变化,只对某个频点的噪声有显著抑制作用,对于频率不确定或无法预知的情况,可能不是最佳选择。在实际应用中,选择合适的连接方式需要根据具体的电路频率、信号类型、设计要求等因素综合考虑,以达到最佳的电磁兼容效果.高频信号干扰:在高频电路中,单点接地可能导致信号回流路径过长,增加地线电感,从而引入高频噪声。限制噪声电流:0欧姆电阻相当于一个非常窄的电流通路,能够有效地限制环路电流,使噪声得到抑制。抑制高频信号:电感对高频信号有较大的阻碍作用,可以有效抑制高频噪声。

linkking27的博客 779

Day23JavaSE——多线程&实现

Day23JavaSE——多线程&实现 文章目录Day23JavaSE——多线程&实现进程的概述进程的意义并行并发的区别Java程序运行原理JVM的启动是多线程的吗多线程实现方式一案例利用多线程复制文件线程优先级问题线程控制实现多线程方式二(解决了Java中只能单继承问题)实现多线程方式3卖电影票案例继承Thread类的方式卖电影票案例实现Runnable接口的方式卖电影票线程安全问题生产消费者线程案例同步代码块解决线程安全问题同步方法锁JVM内存模型JVM内存模型 多线程 进程

adAir_liu的博客 1481

硬件工程师笔记——电子器件汇总大全

本文系统总结了14种常用电子器件的工作原理及功能应用,包括电阻、压敏电阻、电容、电感、二极管、三极管、MOS管、晶振、光耦、IGBT、继电器、磁珠、可控硅线性稳压器。每种器件从结构原理、工作特性到典型应用进行全面解析,如电阻的限流分压、电容的储能滤波、三极管的放大开关等。重点阐述了各器件在电路设计中的关键作用,如IGBT的功率控制、继电器的隔离保护、LDO的电压稳定等,并提供了实际电路应用案例。文章还整理了硬件工程师笔试面试相关的知识点真题资源,为电子工程师提供全面的技术参考。

XU157303764的博客 2万+

JAVASE进阶day12(多线程,JUC包)

进程共享堆不共享栈。

qq_65095414的博客 716

刘意JavaSE 学习笔记——总纲

开始学习JavaSE了,记录下自己学习的进程。   学习大纲   1 开发环境配置 day01 配置 2 基础语法(基本差不多,看一下就好) day02 命名规则,进制转换 day03 运算符,if语句 day04 switch,for,while,break,continue,return语句 day05 方法 重载 一维数组 day06 二维数组 类,对象,内存解析 以...

desperatecat的博客 3843

JavaSE--day13--多线程

程序(program):一段代码,一个应用(问题)官方一点:是为完成特定任务、用某种语言编写的一组指令的集合,是一段静态的代码。(程序是静态的)进程(process):(大脑)是程序的一次执行过程。正在运行的一个程序,进程作为资源分配的单位,在内存中会为每个进程分配不同的内存区域。(进程是动态的)是一个动的过程 ,进程的生命周期 : 有它自身的产生、存在消亡的过程线程(thread):(思路)进程可进一步细化为线程, 是一个程序内部的一条执行路径。

m0_62345235的博客 344

JavaSE学习day24(线程())

###24.01_多线程(线程的引入)(了解) 1.什么是线程 线程是程序执行的一条路径, 一个进程中可以包含多条线程线程并发执行可以提高程序的效率, 可以同时完成多项工作 2.多线程的应用场景 红蜘蛛同时共享屏幕给多个电脑 迅雷开启多条线程一起下载 QQ同时多个人一起视频 服务器同时处理多个客户端请求 ###24.02_多线程(线程并行并发的区别) 并行就是...

weixin_42135811的博客 289

javaSE(5)——IO,线程,Lambda

文章目录1 IO2 线程3 网络编程4 反射(基础)5 Mysqljdbc利用反射封装jdbc注解,xml利用反射 1 IO 2 线程 3 网络编程 4 反射(基础) 5 Mysql jdbc 利用反射封装jdbc 注解,xml 利用反射 ...

weixin_45044097的博客 750

14年刘意java笔记_刘意JavaSE 学习笔记——总纲

开始学习JavaSE了,记录下自己学习的进程。学习大纲1 开发环境配置day01 配置2 基础语法(基本差不多,看一下就好)day02 命名规则,进制转换day03 运算符,if语句day04 switch,for,while,break,continue,return语句day05 方法 重载 一维数组day06 二维数组 类,对象,内存解析以上花3天时间3【重点难点】面向对象(封装、继承、多态...

weixin_36377785的博客 406

javase-day09

【代码】javase-day09。

m0_64370841的博客 495

打卡面试题-day06(javaSE)

IO 什么是BIO BIO就是传统的java.io包,是基于流模型实现的,交互的方式是同步,阻塞方式,也就是读入输入流或者输出流时,在读写动作完成之前,线程会一直阻塞在那里,他们之间的调用是可靠的线性顺序,优点:代码比较简单,直观;缺点:IO的效率扩展性很低,容易成为应用型瓶颈。 什么是NIO 是java1.4引入的java.nio包,提供了Channel,Selector,Buffer等新的抽象,可以构建多路复用的,同步非阻塞IO程序,同时提供了更接近操作系统底层高性能的数据操作方式。 什么是A

qq_41934990的博客 308

01.06_学习Java的day16(详解)

线程有一种特殊的线程: 守护线程 特殊: (1)它不能单独存在 (2)只要非守护线程结束了,守护线程自动结束 JVM有没有默认的守护线程:GC回收线程,异常检测的线程 public class Daemon { public static void main(String[] args) { MyDaemon my = new MyDaemon(); my....

weixin_45506970的博客 135

java学习笔记第27天2018.09.29

Debug: F6:下一步 F5:进入到方法中 F7:跳出方法 Junit: @Test:方法测试 @Before@After分别实在@Test执行前执行后执行。 @BeforeClass@AfterClass需要用在静态方法上,分别是在类加载程序结束各执行一次 多线程进程:正在运行中的程序 线程:属于进程,是进程中一个可以独立运行的代码片段 进程需要依赖cpu执行,cpu某一时刻只能...

weixin_43117449的博客 296

Java SE 学习记录——进阶版05

@学习记录 开始学习Java 遵从同学的指导,从Java se开始学习 黑马的JavaSE零基础入门【异常、线程】 第一章 异常 1.1 异常概念 16-01 Map集合概述 1.2 异常体系 1.3 异常的产生过程解析 第二章 异常的处理 2.1 抛出异常throw 2.2 Objects非空判断 2.3 声明异常throws 2.4 捕获异常try…catch 2.4 finally代码块 2.5 异常注意事项 第三章 自定义异常 3.1 概述 3.2 自定义异常的练习 第四章 多线程 4.1 并发与并

weixin_42690266的博客 173

2021-07-02

javase学习笔记 ps:忽发奇想,把自己的学习笔记发成博客,记录下自己的成长路线,也方便日后回顾;有什么问题请多多指正呦! day01 〇、常见异常 1、java.lang.ClasscastException @ 类型转化异常 2、java.lang.NullpointerException @ 空指针异常 3、IndexOut0fBoundsException @ 数组下标越界异常 4、NumberFormatException @ 数字格式化异常 一、常用DOS命令 1、mkdir 目录名 @

chen_xiao_yu_的博客 2384

工作中使用到的单词(软件开发)_第四版

本文汇总了2020-2025年间软件开发相关的工作笔记,主要包括三版技术词汇整理(2020-2025)、CSDN文章导出PDF情况,以及2025年6月的专题整理。重点内容涉及:WebSphere中jackson包加载路径问题、Java异步线程类型(守护/非守护线程)的区分与解决方案、DB2数据库连接相关指令(db2listapplications等)、AWS托管服务优势,以及OSGi框架与Java的关系说明。特别标注了技术术语的英文发音(如initiative)敏感信息处理注意事项(敏感度标签设置)。后续

sun0322 1299

工作中使用到的单词(软件开发)

1.エイリアス   alias 别名 powershell使用 get-help 命令时,会得到与此命令 相关(别名)的命令 2.プロキシ proxy 代 理 3.プロモート   promote 促进,提升   开发的系统新功能上线发布,有时会使用到这个词,比如 STプロモート 还有使用リリース这个词的。比如STリリース。个人认为两者含义相同。 4.見逃し み................................................................

sun0322 6万+

(--)(++)在值的前面后面的区别

--(也就是-1) 这里使用a,b解释 这里是先将a值赋给b之后,然后a进行自身的-- 这里是a值先将自己--,让后将值赋给b ++(也就是+1) 这里使用x,y解释 这里是先进行y++之后让后再进行赋值y--(赋值)>b 这里是先将y值赋给x.然后进行自身的++ 下面有一道例题: package com.csdn.jdbcdemo.date201

Coder_Hello_World的博客 2857

JAVSE_Day02面对对象(封装/继承/多态/抽象)

类的定义:类:具有相同特性(状态)行为(功能)的对象的抽象就是类,因此,对象的抽象就是类,类的具体化就是对象,也可以说类的实例是对象,类实际上就是一种数据类型。 类具有特性:对象的状态,用成员变量来描述。 类具有功能:对象的为用方法来描述.什么是类:类是对象的类型/模板。创建一个对象就是使用一个类作为构建该对象的基础不过在面向对象编程里,我们肯定是先有类 如果没有类,对象就没有实例化。-----...

Coder_Hello_World的博客 2678

如何使用Properties配置文件

工具:eclipse(Myeclipse) 知识面:javase IO流/文件配置 1.步骤:创建Properties对象 2.创建文件路径 3.加载资源配置 4.关闭文件路径 5.使用加载资源对象properties调用getProperties() //配置对象 try { Properties properties = new Properties();

Coder_Hello_World的博客 2537

JAVSE_day05_JAVA中的异常处理机制(Exception)

错误(程序员不可控制):StackOverflowError:package com.anonymous.javase.day05; public class Demo1 { public static void main(String[] args) { Demo1.main(args); /*Exception in thread "main" java.lang.StackOve...

Coder_Hello_World的博客 1209
上一篇: JAVSE_day05_JAVA中的异常处理机制(Exception)
下一篇: 安装Gitlab(适用于Centos6和7)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值