1.什么是单例模式
单例类在整个程序中只能有一个实例,这个类负责创建自己对象,并确保只有一个对象被创建。(饿汉式)
步骤一: 创建一个类
public class Singleton1 {
public static Singleton1 instance=new Singleton1();
private Singleton1(){
}
public static Singleton1 getInstance(){
return instance;
}
}
步骤二: 从Singleton1中获取唯一对象
public class Singleton1Test {
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
new Thread(new Runnable() {
@Override
public void run() {
System.out.println(Singleton1.getInstance());
}
}).start();
}
}
}
登记式:
注:饿汉式和懒汉式的区别
1.饿汉式:类加载时就对对象进行初始化;
2.懒汉式:第一次使用对象时才去加载;
2.大数加法
import java.util.Scanner;
//编程实现大数的加法
public class Dashu {
public static void main(String[] args) {
Scanner a=new Scanner(System.in);
String str1=a.nextLine();
Scanner b=new Scanner(System.in);
String str2=b.nextLine();
char[] small=null;
char[] large=null;
if(str1.length()>str2.length()){
large=str1.toCharArray();
small=str2.toCharArray();
}else{
large=str2.toCharArray();
small=str1.toCharArray();
}
int[] nums=new int[large.length+1];
for(int i=0;i< large.length;i++){
nums[i]=large[large.length-i-1]-'0';
}
for(int i=0;i<small.length;i++)
nums[i]=nums[i]+small[small.length-i-1]-'0';
for(int i=0;i< nums.length-1;i++){
if(nums[i]>9)
{
nums[i+1]=nums[i+1]+nums[i]/10;
nums[i]=nums[i]%10;
}
}
StringBuilder builder=new StringBuilder();
for(int i=nums.length-1;i>=0;i--){
builder.append(nums[i]);
}
String result=builder.toString();
if(result.startsWith("0"))
result=result.substring(1);
System.out.println(result);
}
}
3.大数乘法
import java.util.Scanner;
public class DaShuMul {
//n位数*m位数最大位数n+m位
public static void main(String[] args) {
Scanner a=new Scanner(System.in);
String str1=a.nextLine();
Scanner b=new Scanner(System.in);
String str2=b.nextLine();
char[] small;
char[] large;
if(str1.length()>str2.length()){
large=str1.toCharArray();
small=str2.toCharArray();
}else{
large=str2.toCharArray();
small=str1.toCharArray();
}
int[] multi=new int[str1.length()+str2.length()];
for(int j= small.length-1;j>=0;j--){
for(int i= large.length-1;i>=0;i--){
int num1=small[j]-'0';
int num2=large[i]-'0';
multi[large.length-i-1+ small.length-j-1]+=num1*num2;
}
}
for (int i=0;i< multi.length-1;i++){
if(multi[i]>9){
multi[i+1]+=multi[i]/10;
multi[i]=multi[i]%10;
}
}
StringBuilder builder=new StringBuilder();
for(int i= multi.length-1;i>=0;i--)
{
builder.append(multi[i]);
}
String result= builder.toString();
if(result.startsWith("0")){
result=result.substring(1);
}
System.out.println(result);
}
}
4.找出字符串中出现次数最多的元素
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class Test1 {
public static void main(String[] args) {
Scanner str=new Scanner(System.in);
String res=str.nextLine();
char result=' ';
int max=0;
Map<Character,Integer> map=new HashMap<>();//使用Character包装类
//使用map方法一次循坏实现遍历操作
for(int i=0;i<res.length();i++){
char c=res.charAt(i);
Integer count=map.get(c);
if(count==null){
count=1;
}else{
count++;
}
map.put(c,count);
if(count>max){
result=c;
max=count;
}
}
System.out.println(result+" "+max);
}
}
5.找出字符串中第一个出现的重复元素(两种解法 :Map和Set)
import java.util.*;
public class Test2 {
public static void main(String[] args) {
Scanner str=new Scanner(System.in);
String res=str.nextLine();
test2(res);
Map<Character,Integer> map=new HashMap<>();
for(int i=0;i<res.length();i++){
char c=res.charAt(i);
Integer count=map.get(c);
if(count==null){
count=1;
}else {
count++;
}
map.put(c,count);
if(count==2){
char b=c;
System.out.println(b);
return;
}
}
}
//使用set的解法
public static void test2(String res){
Set<Character> set=new HashSet<>();
for(int i=0;i<res.length();i++){
if(!set.add(res.charAt(i))){
System.out.println(res.charAt(i));
return;
}
}
}
}
6.找出字符串中第一个只出现一次的元素
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class Test3 {
public static void main(String[] args) {
Scanner str=new Scanner(System.in);
String res=str.nextLine();
Map<Character,Integer> map=new HashMap<>();
for(int i=0;i<res.length();i++){
Integer count=map.get(res.charAt(i));
if(count==null){
count=1;
}else{
count++;
}
map.put(res.charAt(i),count);
}
for(int i=0;i<res.length();i++){
if(map.get(res.charAt(i))==1){
System.out.println(res.charAt(i));
break;
}
}
}
}
7.统计字符串中各个数字出现的次数
import java.util.Scanner;
//使用桶排序
public class Test4 {
public static void main(String[] args) {
int[] nums=new int[10];
Scanner str=new Scanner(System.in);
String res=str.nextLine();
for(int i=0;i<res.length();i++){
char c=res.charAt(i);
nums[c-'0']++;
}
for(int i=0;i<nums.length;i++){
if(nums[i]!=0){
System.out.println(i+"出现了"+nums[i]+"次");
}
}
}
}