阅读原文

  • 序引

    • eclipse的使用
    • Jav实用方法
      • 输入
      • 输出
      • 数组的操作
      • String类型的使用
      • 格式之间的转换
      • 快速排序
      • 大数的使用
      • Math类
      • 日期类
      • Date类
    • 模板
      • 公因公倍数
      • 进制转换
      • 全排列
      • 判断闰年
    • 题目总结
      • TreeSet排序

序引

准备17号的蓝桥杯写的这个文档,目前打算记录三个方面

  1. Java实用方法
  2. 做题的总结
  3. 各种模板

eclipse的使用

  1. 代码模板:main+Alt+/;syso+Alt+/;
  2. 快捷键:Ctrl+1快速修复;Ctrl+Shift+O快速导包;Ctrl+Shift+F 格式化当前代码;Shift+Enter 在当前行的下一行插入空行

Jav实用方法

输入

  1. 对字符串的获取可以采用next()和nextline(),用hasNext()或hasNextline()判断是否还有数据输入
    hasNext()或hasNextline()在while循环中可能没啥区别,但next()和nextline()却大有不同
    next()不能读取空格,换言之,读取到有效字符之后遇到空格就会停止,但nextline()以Enter结束,能存储对应格式的任何字符
    在比赛的使用中可以将按行输入的元素统一存储到string字符串中,然后用string自带的split按空格或其他(,)进行分割存储到字符串数组中

     Scanner sc=new Scanner(System.in);String s=sc.nextLine();String arr[]=s.split(" ");for (String t:arr)System.out.println(t);
    
  2. 字符的输入:Java中不提供nextChar()的方法,但可以使用next().charAt(0)
     Scanner sc = new Scanner(System.in);char c= sc.next().charAt(0);
    

输出

  1. %4d和%-4d的区别:%4d是靠右输出四位,不足用空格补齐;%-4d是靠左输出
  2. 输出N位小数,可以使用DecimalFormat对格式进行定义;或者使用String.format(格式,浮点变量)直接打印
     public static void main(String[] args) {float f= (float) 3.234567;//正常输出System.out.println(f);//采用类DecimalFormat df=new DecimalFormat("#0.00");System.out.println(df.format(f));//模仿C语言System.out.printf("%.2f\n",f);//这里使用的C语言中的 printf//转换格式System.out.println(String.format("%.2f",f));
    

    结果:2.35 2.35

数组的操作

数组的拷贝:

  1. 数组的拷贝,可以使用数组自带的clone()方法

     public static void main(String[] args) {int a[]={1,2,3,4};int b[]=a.clone();for (int n:b)System.out.print(n+" ");}
    

    结果:1 2 3 4

  2. System.arraycopy(Object a, int begin_a, Object b, int begin_b, int length);方法
     public static void main(String[] args) {int a[]={1,2,3,4};int b[]=new int[10];System.arraycopy(a,0,b,0,3);for (int n:b)System.out.print(n+" ");}//这种方法可以进行自定义长度的拷贝
    

    结果:1 2 3 0 0 0 0 0 0 0

  3. Arrays.copyOf(object,length);方法
     public static void main(String[] args) {int a[]={1,2,3,4};int b[]= Arrays.copyOf(a,3);for (int n:b)System.out.print(n+" ");}
    

    结果:1 2 3

String类型的使用

  1. 存入两个字符相同的string型时,两者的地址也相同(将后创建的地址指向前者,节约内存);但是new String的两个不同对象的内容即便相同地址也不同

    public static void main(String[] args) {String a="asd";String b="asd";boolean t=a==b;String c=new String("iop");String d=new String("iop");boolean y=c==d;System.out.println(t);System.out.println(y);
    }//==和!=是用来判断string对象地址是否相同的
    

    结果:true
    false

  2. 判断string对象是否相同用自带的equals方法
     public static void main(String[] args) {String a="asd";String b="asd";if (a.equals(b))System.out.println("==");elseSystem.out.println("!=");}
    

    结果:==

  3. 要想遍历string的字符内容,需要将其转换为字符数组
     public static void main(String[] args) {String a = "asd";char arr[] = a.toCharArray();for (char n : arr)System.out.print(n + " ");}
    

    结果:a s d

  4. string自带的使用方法还有split:分割;大小写转换,提取子字符串等,具体可查阅API

格式之间的转换

  1. 最简单直接的是在变量前加(目标类型)

    char c= 'a';
    int a=(int)c;
    System.out.println(a);
    

    此方法只用于基本的数据类型,String类型的不行

  2. String和其他基本数据类型的转换
    • 可以使用toString将其他数据类型转换为String类,但这种方法只对包装类起作用(如:Integer)
    • 使用String自带的valueOf()方法,支持将基本的数据类型转换
    • 而将String转换为其他,可以用自带类的.parseXXX(string)方法
    Integer a=new Integer(100);
    String s1=a.toString();//类自带的toString()方法
    int i=99;
    String s2=String.valueOf(i);//String自带的valueOf()方法
    Integer b=Integer.parseInt(s2);//每个类都有.parseXXX(String s)方法
    

快速排序

实用Arrays中的sort方法可以对数组进行快速排序

    int[] arr = {1, 3, 6, 2, 4, 8, 7, 9};Arrays.sort(arr);for (int m : arr)System.out.print(m + " ");

若要实现降序排序可以使用Collections.reverseOrder()方法(数组必须为Integer类)

    Integer[] arr = {1, 3, 6, 2, 4, 8, 7, 9};Arrays.sort(arr, Collections.reverseOrder());for (int m : arr)System.out.print(m + " ");

大数的使用

  1. 定义BigInteger类型可以使用实例化类的方法,也可以使用BigInteger中的valueOf(数字/变量)
    BigInteger a = new BigInteger("3");BigInteger b = BigInteger.valueOf(3);int i = 788;BigInteger c = BigInteger.valueOf(i);
  1. 大数的类是在java.math.*包里的,所以继承了math的所有方法,而运算也是使用方法来进行
    BigInteger a = new BigInteger("3");BigInteger b = BigInteger.valueOf(-3);int i = 788;BigInteger c = BigInteger.valueOf(i);BigInteger ad=a.add(c);BigInteger sub=a.subtract(b);BigInteger mul=a.multiply(b);BigInteger div=c.divide(a);BigInteger re=c.remainder(a);BigInteger ab=b.abs();System.out.println(ad);System.out.println(sub);System.out.println(mul);System.out.println(div);System.out.println(re);System.out.println(ab);

结果:791 6 -9 262 2 3

Math类

  1. 可以求sqrt(平方根)、abs(绝对值)、max、min、pow(幂)、取整(ceil、floor、round)具体查阅API
  2. 输出一个随机数用random()方法
    public static void main(String[] args) {double c = Math.random();System.out.println(c);//输出一个0-1之间的随机数(double类型)int b = 100;int d = (int) (Math.random() * b + 1);//输出一个1-b之间的随机数System.out.println(d);int a = 50;int e = (int) (Math.random() * (b - a + 1) + a);// 输出一个a-b的随机数System.out.println(e);
    }//+ 1 是因为random()最大取不到1,所以上限取整后就会少1
    

日期类

MONTH字段是从0月开始计数的,所以12月对应的值是11。DAY_OF_WEEK中星期天对应的是1,星期一对应的是2,星期六对应的是7,而YEAR和DAY_OF_MONTH都是从1开始计数

public static void main(String[] args) {Date date=new Date();System.out.println(date.toString());//输出当前时间SimpleDateFormat ft=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");//定义日期格式System.out.println(ft.format(date));//按格式输出System.out.printf("%tR",date);printf方法也具有日期格式的输出Calendar c = Calendar.getInstance();//默认是当前日期c.set(2009, 6 - 1, 12);//对日期对象进行设置int month=c.get(Calendar.MONTH)+1;//月份的存储是从0开始的get(Calendar.*)方法可以获取很多日期信息GregorianCalendar gc=new GregorianCalendar(2020,10-1,14);int a=gc.getActualMaximum(Calendar.DAY_OF_MONTH);//当前月的的总日int b=gc.get(Calendar.DAY_OF_WEEK);//当前月第一天是星期几System.out.println(a);System.out.println(b);}

Date类

public static void main(String[] args) {Date date1 = new Date(21, 6, 23, 12, 0, 0);System.out.println(date1);Date date2 = new Date(120, 6, 1, 12, 0, 0);System.out.println(date2);long time = date2.getTime() - date1.getTime();System.out.println(time / (60000));//得到的值是毫秒,求分钟要/60000
}

模板

公因公倍数

  1. 求最大公约数可以采用辗转相除法,就是两数的最大公约数就是较小数和两数余数的最大公约数
  2. 最小公倍数等于两数的乘积除最大公约数
public class 练习 {static int gcd(int a,int b){return b==0?a:gcd(b,a%b);//辗转相除法,两数的最大公约数等于较小数与两数余数的最大公约数}static int lcm(int a,int b){return a*b/gcd(a,b);//最大公倍数等于两数相乘除最大公约数}public static void main(String[] args) {System.out.println(gcd(12,5));System.out.println(lcm(12,5));}
}

进制转换

在Integer对象中,常用的进制转换

十进制的转换对象 对应的方法和参数 返回值
转换成二进制 Integer.toBinaryString(n); 一个二进制字符串
转换成八进制 Integer.toOctalString(n); 一个八进制字符串
转换成十六进制 Integer.toHexString(n); 一个十六进制字符串
转换成r进制 Integer.toString(100, 16); 一个r进制字符串

完全可以用Integer.toString(n,radix)用来进制的转换

public static void main(String[] args) {int n=18;System.out.println(Integer.toBinaryString(n));//转换二进制System.out.println(Integer.toOctalString(n));//转换成八进制System.out.println(Integer.toHexString(n));//转换成十六进制System.out.println(Integer.toString(n,2));String s = "10101";System.out.println(Integer.parseInt(s,2));//回转为十进制// 判断十进制整数转换成二进制后“1”的个数System.out.println(Integer.bitCount(21));}

全排列

static int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
static int ans = 0;
static void dfs(int k) {if (k >= 9) {//递归出口ans++;}for (int i = k; i < 9; i++) {int t = arr[k];arr[k] = arr[i];arr[i] = t;//将相邻的两位数互换dfs(k + 1);//互换下一个t = arr[k];arr[k] = arr[i];arr[i] = t;//回溯时更换回来,不影响下一次排列}
}public static void main(String[] args) {dfs(0);System.out.println(ans);
}

判断闰年

public static void main(String[] args) {int n=2000;if (n%400==0||(n%4==0&&n%100!=0))System.out.println("true");elseSystem.out.println("false");
}

题目总结

TreeSet排序

如果数据使用String进行使用却又需要按照顺序进行输出时,可以将最后的结果添加进TreeSet中进行排序

Set<String> ans=new TreeSet<String>();
for (String s:ans) System.out.println(s);

蓝桥_Java实用总结相关推荐

  1. java水印图片_JAVA实用案例之图片水印开发

    写在最前面 上周零零碎碎花了一周的时间研究水印的开发,现在终于写了个入门级的Demo,做下笔记同时分享出来供大家参考. Demo是在我上次写的 JAVA实用案例之文件导入导出(POI方式) 框架基础上 ...

  2. java验证码的代码_java实用验证码的实现代码

    本文为大家分享了java实用验证码的实现代码,供大家参考,具体内容如下 1.ValidCode package validImg; import java.awt.Color; import java ...

  3. 工具类的方法怎么引用_Java实用工具类:File工具类方法学习,可创建目录及文件...

    开发项目过程中,会用到很多工具类,今天分享一个Java中File操作工具类,可以帮你节约时间,提高开发效率. File工具类 public class CreateFileUtil { public ...

  4. java list分批_Java实用笔记——mybatis批量导入

    1.使用Statement 批量插入 public void batchInsertJdbc1() throws Exception {DataSource ds = (DataSource) Spr ...

  5. java回车后自动从一个文本框切换到另一个_Java实用教程-Java基本语法-Java程序的构成...

    Java源程序逻辑构成分为两大部分:程序头包的引用和类的定义. 1.程序头包的引用 主要是指引用JDK软件包自带的包,也可以是自己定义的类.引用之后程序体中就可以自由应用包中的类的方法和属性等. 2. ...

  6. java qlv转mp4 代码_Java实用工具类五:URL转码、解码类

    package com.cn.hnust.util; import java.io.UnsupportedEncodingException; import java.util.HashMap; im ...

  7. java提升班蓝桥_Java实现蓝桥杯-算法提高 P1003

    算法提高 P1003 时间限制:1.0s 内存限制:256.0MB 作为一名网络警察,你的任务是监视电子邮件,看其中是否有一些敏感的关键词.不过,有些狡猾的犯罪嫌疑人会改变某些单词的字母顺序,以逃避检 ...

  8. java实用案例教程_Java实用案例教程

    第1章 初识Javn 1.1 Java发展历史 1.1.1 Java的发展历史简介 1.1.2 Java版本和未来的发展趋势简介 1.2 Java技术简介 1.2.1 Java语言的特点 1.2.2 ...

  9. java 异或_Java之超级基础且实用的知识点

    1月20日 今天是小编的寒假的第一天!忙碌家里的事忙了一上午~下午困着但是不学习会心里难受.(毕竟是立下了寒假Flag的人)然后就打开了电脑,我发现我这个人,生活中不洁癖,但学习上还是有点洁癖的,这不 ...

最新文章

  1. 详解C#委托,事件与回调函数
  2. Docker镜像、容器数据卷和Dockerfile
  3. Mybatis 配置文件
  4. pfa是什么意思_PFA的完整形式是什么?
  5. 用户参与度与活跃度的区别_用户参与度突然下降
  6. 谭民机器人_机器人视觉伺服研究进展-中科院自动化所-谭民.
  7. BZOJ 3729: Gty的游戏 [伪ETT 博弈论]【学习笔记】
  8. create-react-app中配置antd按需加载、less、proxy、路径别名
  9. 三十、K8s供应链安全1-准入控制器
  10. 【零基础】入门51单片机图文教程(Proteus+Keil)
  11. Protocol Buffer编译器安装
  12. IE的Kiosk模式
  13. 苹果Mac系统彻底关闭开机声音duang~
  14. 不要小看 WebSocket!长连接、有状态、双向、全双工都是王炸技能
  15. 神经网络架构搜索——可微分搜索(Latency-DARTS)
  16. 2021-2027全球与中国厨房用食品搅拌机市场现状及未来发展趋势
  17. iOS使用百度地图定位,关掉系统定位服务该怎么提示用户打开
  18. 密码锁(春季每日一题 29)
  19. CloudXNS:关于X优化灵敏度的理解
  20. 如何实现一个深拷贝(考虑循环引用对象、和symbol类型)

热门文章

  1. 计算机1000字英语文章,计算机与人类作文1000字
  2. Codeforces-797E-Array Queries(dp)
  3. 创新工具|用同理心地图(Empathy Map)深度洞察用户
  4. SpringBoot实战实现分布式锁一之重现多线程高并发场景
  5. sdo的三种实现方法
  6. 使用iso镜像包制作离线本地镜像源(本地yum源)
  7. CAS实现SSO单点登录-CAS Server搭建
  8. Spring框架(IOCDI)xXML形式和注解形式
  9. CentOS 6.X手动安装最新版ffmpeg和mencoder
  10. 软件著作权的申请流程,个人团体都可