常用java编程代码汇总

目录

文件的读取和写入:

synchronization线程锁:

单例模式:

反射



前言

因工作问题,有些代码常常需要使用,为了方便,整理如下。

文件的读取和写入:

import java.io.File;  
import java.io.InputStreamReader;  
import java.io.BufferedReader;  
import java.io.BufferedWriter;  
import java.io.FileInputStream;  
import java.io.FileWriter;  
  
public class FileReadAndWrite {  
    public static void main(String args[]) {  
        // 绝对路径或相对路径都可以,这里是绝对路径,写入文件时演示相对路径
        String readFilePath = "D:/input.txt";
        String writeFilePath = "D:/output.txt";
        // 防止文件建立或读取失败,用catch捕捉错误并打印,也可以throw  
        try { 
            /* 读文件 */  
            File filename = new File(readFilePath); // 要读取以上路径的input.txt文件  
            if(!filename.exists()) {
            	System.out.println("读取失败,文件不存在!");
            }else {
            	// 建立一个输入流对象reader 
            	InputStreamReader inputStreamReader = new InputStreamReader(new FileInputStream(filename));  
            	// 建立一个对象,它把文件内容转成计算机能读懂的语言  
	            BufferedReader reader = new BufferedReader(inputStreamReader);
	            String line = "";  
	            while ((line = reader.readLine()) != null) {  
	                //line:一次读入一行的数据  
	                System.out.println(line);
	            }  
	            reader.close();
            }
            
            
            /* 写文件 */  
            File writeFileName = new File(writeFilePath); // 相对路径,如果没有则要建立一个新的output.txt文件  
            if(!writeFileName.exists()) {
            	writeFileName.createNewFile(); // 创建新文件  
            }
            FileWriter fileWriter = new FileWriter(writeFileName);
            //FileWriter fileWriter = new FileWriter(writeFile,true);     //true,代表着追加写入,不会讲之前已经录入的内容覆盖
            BufferedWriter write = new BufferedWriter(fileWriter);  
            write.write("该字符串写入成功!\r\n"); // \r\n即为换行  
            write.flush(); // 把缓存区内容压入文件  
            write.close(); // 最后记得关闭文件  
  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
    }  
}  

 

synchronization线程锁:

package jinCheng;
public class TestBank {
    public static void main(String[] args) {
        Bank bank = new Bank();
        Thread yangkang = new Thread(bank,"杨康");
        Thread guojing = new Thread(bank,"郭靖");
        yangkang.start();
        guojing.start();
    }	
}
class Bank implements Runnable{
    private int money = 0;
    public void setMoney() {
        money += 100;
        System.out.println(Thread.currentThread().getName()
                + "存了100,余额:"+money);
    }
    public void run() {
        try {
            for(int i = 1;i<=3;i++) {
                synchronized (this) {
                    setMoney();
                }
            }
        }catch (Exception e) {
            e.printStackTrace();
        }
    }
}

单例模式:

package danli;

public class SingletonTest {
    public static void main(String[] args) {
        Singleton singleton1 = Singleton.getSingleton();
        Singleton singleton2 = Singleton.getSingleton();
        System.out.println(singleton1);
        System.out.println(singleton2);
    }
}
/**
  * 懒汉式单例模式
  * 双检锁/双重校验锁(DCL,即 double-checked locking)
  是否Lazy初始化:是
  是否多线程安全:是
  描述:这种方式采用双锁机制,安全且在多线程情况下能保持高性能。
  getInstance() 的性能对应用程序很关键。
 */
class Singleton{
    private volatile static Singleton singleton;
    private Singleton() {}
    public static Singleton getSingleton() {
        if(singleton == null) {
            synchronized(Singleton.class) {
                if(singleton==null) {
                    singleton = new Singleton();
                }
            }
        }
        return singleton;
    }
}

反射

public class testPersonReflect {
	public static void main(String[] args) {
		//获取class对象
		Class p=Person.class;
		//获取属性    获取所有的属性  包括私有的
		Field[] fields = p.getDeclaredFields();
		//获取属性  只能返回  公有的
		Field[] fields2 = p.getFields();
		System.out.println("=================");
		for(Field f:fields){
			System.out.println(f);
		}
		System.out.println("--------------");
		for(Field f:fields2){
			System.out.println(f);
		}
		//参数表示的是属性的名字
		Field field = p.getField("name");
		System.out.println(field.getName());	
		//方法
		/**
		 * 参数1:方法名
		 * 参数2:方法需要的参数
		 * 获取的方法是共有的方法
		 */
		Method method = p.getMethod("eat", int.class,double.class);
		System.out.println(method.getName());
		
		//构造方法
		Constructor[] constructors = p.getConstructors();
		for(Constructor c:constructors){
			System.out.println(c);
		}
		//参数指的是构造方法的参数类型
		Constructor constructor = p.getConstructor(String.class,int.class);
		System.out.println(constructor);
		
		//通过反射创建对象  获取构造方法  参数:创建对象的时候给构造方法穿的参数
		//new Person("tt",34)
		
		Person person = (Person)constructor.newInstance("sanpang",45);
		System.out.println("age"+person.getAge());
		System.out.println("name"+person.getName());
		
		//设置属性的值
		//person.setAge(56);
		//System.out.println(person.getAge());
		//p.getField("name")  获取属性   set(obj, value);给属性复制
		//p.name=
		//set的两个参数  参数1:对象  参数2:属性的值
		p.getField("name").set(person, "xiaohuahua");
		System.out.println(person.getName());
		
		/*p.getField("age").set(person, 109);
		System.out.println(person.getAge());*/
		Field declaredField = p.getDeclaredField("age");
		//将私有属性的赋值权限打开
		declaredField.setAccessible(true);
		declaredField.set(person, 109);
		System.out.println(person.getAge());		
		//方法调用
		Method m01=p.getMethod("eat", int.class,double.class);
		//person.eat(4, 5.6);
		//参数1  对象  参数2:方法的参数
		m01.invoke(person, 18,0.0);		
	}
}

 

 

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java面试资源概览 一、内容概览 本次分享的资源涵盖了Java面试的各个方面,从基础知识到高级技术,从数据库到框架应用,都做了深入的探讨和总结。具体内容包括: Java基础知识点:包括数据类型、面向对象特性、异常处理、集合框架等。 Java核心技术:如多线程、网络编程、序列化等都有详细的解释和示例。 常用框架:如Spring、MyBatis等框架的使用方法和内部原理都有涉及。 数据库相关:包括关系型数据库和非关系型数据库的使用,以及JDBC、MyBatis等与数据库交互的技术。 实战项目经验:分享了几个经典的Java项目,解析了项目的架构设计和核心技术点。 面试经验和技巧:整理了常见的Java面试问题,并给出了答题建议和技巧。 代码和项目实例:提供了多个Java项目的源代码,方便学习者参考和实践。 学习笔记和心得:记录了学习过程中的重点难点和心得体会,有助于学习者更好地理解和掌握知识。 二、适用人群 本资源适用于即将毕业或已经毕业,希望通过学习Java找到一份理想工作的同学。无论你是初学者还是有一定基础的开发者,都能从中获得启发和帮助。 三、使用建议 系统学习:建议学习者按照资源提供的顺序和内容,系统地学习和掌握Java的知识点。 实践为王:理论知识和实战经验相结合,通过实践来加深理解和记忆。 持续更新:由于Java技术和面试要求都在不断更新,建议学习者保持关注,随时更新自己的知识和技能。 交流与讨论:与同学或同行进行交流和讨论,分享学习心得和经验,共同进步。Java面试资源概览 一、内容概览 本次分享的资源涵盖了Java面试的各个方面,从基础知识到高级技术,从数据库到框架应用,都做了深入的探讨和总结。具体内容包括: Java基础知识点:包括数据类型、面向对象特性、异常处理、集合框架等。 Java核心技术:如多线程、网络编程、序列化等都有详细的解释和示例。 常用框架:如Spring、MyBatis等框架的使用方法和内部原理都有涉及。 数据库相关:包括关系型数据库和非关系型数据库的使用,以及JDBC、MyBatis等与数据库交互的技术。 实战项目经验:分享了几个经典的Java项目,解析了项目的架构设计和核心技术点。 面试经验和技巧:整理了常见的Java面试问题,并给出了答题建议和技巧。 代码和项目实例:提供了多个Java项目的源代码,方便学习者参考和实践。 学习笔记和心得:记录了学习过程中的重点难点和心得体会,有助于学习者更好地理解和掌握知识。 二、适用人群 本资源适用于即将毕业或已经毕业,希望通过学习Java找到一份理想工作的同学。无论你是初学者还是有一定基础的开发者,都能从中获得启发和帮助。 三、使用建议 系统学习:建议学习者按照资源提供的顺序和内容,系统地学习和掌握Java的知识点。 实践为王:理论知识和实战经验相结合,通过实践来加深理解和记忆。 持续更新:由于Java技术和面试要求都在不断更新,建议学习者保持关注,随时更新自己的知识和技能。 交流与讨论:与同学或同行进行交流和讨论,分享学习心得和经验,共同进步。Java面试资源概览 一、内容概览 本次分享的资源涵盖了Java面试的各个方面,从基础知识到高级技术,从数据库到框架应用,都做了深入的探讨和总结。具体内容包括: Java基础知识点:包括数据类型、面向对象特性、异常处理、集合框架等。 Java核心技术:如多线程、网络编程、序列化等都有详细的解释和示例。 常用框架:如Spring、MyBatis等框架的使用方法和内部原理都有涉及。 数据库相关:包括关系型数据库和非关系型数据库的使用,以及JDBC、MyBatis等与数据库交互的技术。 实战项目经验:分享了几个经典的Java项目,解析了项目的架构设计和核心技术点。 面试经验和技巧:整理了常见的Java面试问题,并给出了答题建议和技巧。 代码和项目实例:提供了多个Java项目的源代码,方便学习者参考和实践。 学习笔记和心得:记录了学习过程中的重点难点和心得体会,有助于学习者更好地理解和掌握知识。 二、适用人群 本资源适用于即将毕业或已经毕业,希望通过学习Java找到一份理想工作的同学。无论你是初学者还是有一定基础的开发者,都能从中获得启发和帮助。 三、使用建议 系统学习:建议学习者按照资源提供的顺序和内容,系统地学习和掌握Java的知识点。 实践为王:理论知识和实战经验相结合,通过实践来加深理解和记忆。 持续更新:由于Java技术和面试要求都在不断更新,建议学习者保持关注,随时更新自己的知识和技能。 交流与讨论:与同学或同行进行交流和讨论,分享学习心得和经验,共同进步。
HDFS(Hadoop分布式文件系统)是Hadoop生态系统中的核心组件,用于在分布式环境下存储和处理大规模数据。HDFS支持多种编程语言的API,其中Java是最常用的。 HDFS的Java API提供了一系列类和方法,可以方便地对HDFS进行读写操作。下面是一些常用的HDFS Java API及其应用实例: 1. Configuration类:用于加载Hadoop配置文件,创建和管理配置对象。可以通过Configuration类的方法设置HDFS的各种参数,比如文件块大小、副本数等。 2. FileSystem类:用于操作HDFS中的文件和目录。可以通过FileSystem类创建、删除和重命名文件,也可以读写文件中的内容。以下是一个示例代码: ```java import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; public class HdfsExample { public static void main(String[] args) { try { // 加载Hadoop配置文件 Configuration conf = new Configuration(); // 创建FileSystem对象 FileSystem fs = FileSystem.get(conf); // 在HDFS创建一个新文件 Path filePath = new Path("/user/hadoop/test.txt"); fs.create(filePath); // 写入文件内容 String content = "Hello, HDFS!"; byte[] bytes = content.getBytes(); fs.writeFile(filePath, bytes); // 读取文件内容 byte[] buffer = new byte[1024]; int bytesRead = fs.open(filePath).read(buffer); String fileContent = new String(buffer, 0, bytesRead); System.out.println("文件内容:" + fileContent); // 删除文件 fs.delete(filePath); // 关闭FileSystem对象 fs.close(); } catch (Exception e) { e.printStackTrace(); } } } ``` 以上示例代码演示了如何使用HDFS Java API创建、写入、读取和删除文件。 除了以上的常用API,HDFS的Java API还提供了许多其他的类和方法,用于实现更复杂的操作,比如文件复制、权限管理、检查点等。开发者可以根据自己的需求选择适合的API进行使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值