ACM竞赛 Java编程小结
1.字符串的长度
String str = new String(" abcd"); int length = str.length();
2.数组的长度、排序
int [] a = {1,2,3,4}; int [] b = Arrays.copyOf(a,a.length);
在java中,定义数组时int [] a = new int[10];默认的初始化为全零
java中 Arrays.fill(b,10); //将数组b[]全部设置为10;
4.字符串与字符数组的转化
String str = new String("abcd"); char [] a = str.toCharArray();
5.字符串数字与数字的转化
4.1 String—>int
String str = "1234"; int i = Integer.parseInt(str); //可能会抛出异常 ,(如果报错)在 main(String[] args)后面加上throws Exception
4.2 int —>String
int i=235; String s = String.valueOf(i); //Of大写
6.从.in文件导入数据
import java.IO.*; public static void main(String [] args) throws IOException{ //会抛出异常 FileReader a = new FileReader("D-small-attempt1.in");//文件与源码在同一目录下
BufferedReader read = new BufferedReader(a);
String textLine="";
String str="";
while(( textLine=read.readLine())!=null){
str+=textLine+" ";
}
String[] numbersArray=str.split(" "); //将str按空格分开,保存成字符数组 }
7.导处数据到.txt文件
import java.IO.*; FileWriter fw = new FileWriter("output.txt");
BufferedWriter bufw = new BufferedWriter(fw);
String line = null;
for(int i=1;i<n+1;i++){
bufw.write("Case #"+i+": "+result[i]);
bufw.newLine(); //下一行
bufw.flush(); //更新
}
bufw.close();
8.保留有限位小数
import java.text.* DecimalFormat sim = new DecimalFormat("0.000000");//保留多少位小数点后面就有几位
double six = sim.format(source); //将source保留六位小数
比较简单的方法(对于输出结果保留有限位小数)
System.out.printf("%.3f",a);
9.常用数学公式(在java.lang.Math包中)
java中pi的使用 Math.PI
对数运算 double x =Math.log(double y); log(y)即 ln(y);
幂运算 double d=Math.pow(double m,double n); m^n
10.java位逻辑运算符
包括:
& 与;
| 或;
~ 非(也叫做求反);
^ 异或
java 中!a取非仅适用于Boolean型变量
java中 ~a 取反操作,
在Java中负数是用整数的补码表示的
补码就是取反+1 比如数A 那么-A就是 ~A+1 所以~A=-A-1;
所以 ~i=-5-1=-6 即~5=-6
11.java移位运算符
包括:
“>> 右移,高位补符号位”;
“>>> 无符号右移,高位补0”;
“<< 左移”;
12.java取整
向上取整:(int)Math.ceil() //只要有小数都+1
向下取整:(int)Math.floor() //不取小数
四舍五入:(int)Math.round() //四舍五入
13.字符串复制、比较、连接、分割
java
str.length()//返回字符串长度 str1.equals(str2)//java字符串比较,相等返回true str.substring(int beginIndex, int endIndex) //java字符串分割 从beginIndex开始,不包括endIndex
java判断字符串中是否包含某个字符或者字符串
String s1="abcdef"; String s2 ="abc"; int x =s1.indexOf(s2);//s2在s1中首次出现的索引,没有返回-1,s2也可以是字符
java字符串拼接 用+;
例如 String s1="abc";String s2="nba";String s3=s1+s2;则s3="abcnba";
java字符串大小写互换
str.toLowerCase();//转成小写
str.toUpperCase();//转成大写
java字符串分割
String str = "ab cd de";
String [] str_array = str.split(" ");//将字符串按空格分开存到字符串数组 String str2 = "192.168.199.1";
String [] str_array2 = str2.split("\\.");//将字符串按'.'分开存到字符串数组
java字符串反转
String s = ".........";
s = (new StringBuffer(s)).reverse().toString();
经验分享:
1、分隔符为“.”(无输出),“|”(不能得到正确结果)转义字符时,“*”,“+”时出错抛出异常,都必须在前面加必须得加"\\",如split(\\|);
2、如果用"\"作为分隔,就得写成这样:String.split("\\\\"),因为在Java中是用"\\"来表示"\"的,字符串得写成这样:String Str="a\\b\\c";
转义字符,必须得加"\\";
3、如果在一个字符串中有多个分隔符,可以用"|"作为连字符,比如:String str="Java string-split#test",可以用Str.split(" |-|#")把每个字符串分开;
14.float和double的取值范围
1.范围
float和double的范围是由指数的位数来决定的。
float的指数位有8位,而double的指数位有11位,分布如下:
float:
1bit(符号位) 8bits(指数位) 23bits(尾数位)
double:
1bit(符号位) 11bits(指数位) 52bits(尾数位)
于是,float的指数范围为-127~+128,而double的指数范围为-1023~+1024,并且指数位是按补码的形式来划分的。
其中负指数决定了浮点数所能表达的绝对值最小的非零数;而正指数决定了浮点数所能表达的绝对值最大的数,也即决定了浮点数的取值范围。
float的范围为-2^128 ~ +2^128,也即-3.40E+38 ~ +3.40E+38;double的范围为-2^1024 ~ +2^1024,也即-1.79E+308 ~ +1.79E+308。
2.精度
float和double的精度是由尾数的位数来决定的。浮点数在内存中是按科学计数法来存储的,其整数部分始终是一个隐含着的“1”,由于它是不变的,故不能对精度造成影响。
float:2^23 = 8388608,一共七位,这意味着最多能有7位有效数字,但绝对能保证的为6位,也即float的精度为6~7位有效数字;
double:2^52 = 4503599627370496,一共16位,同理,double的精度为15~16位。
但是double只能精确前16位,因此必须慎用!
for (double x1 = 0.0; x1 <= 10.0; x1 += 0.1) {
System.out.println(x1); 循环输出结果是9.99999999999998而不是10.0
14、java数据类型的最大值和最小值
相应的整数
System.out.println(Integer.MAX_VALUE);//打印最大整数:2147483647
System.out.println(Integer.MIN_VALUE);//打印最小整数:-2147483648
相应的浮点数:
System.out.println(Float.MAX_VALUE)
System.out.println(Float.MIN_VALUE)
双精度:
System.out.println(Double.MAX_VALUE)
System.out.println(Double.MIN_VALUE)
15.java释放内存
System.gc(); //java释放内存
ACM竞赛 Java编程小结的更多相关文章
- ACM之Java速成(2)
acm中Java的应用 Chapter I. Java的优缺点各种书上都有,这里只说说用Java做ACM-ICPC的特点: (1) 最明显的好处是,学会Java,可以参加Java Challenge ...
- ACM中java的使用
ACM中java的使用 转载自http://www.cnblogs.com/XBWer/archive/2012/06/24/2560532.html 这里指的java速成,只限于java语法,包括输 ...
- ACM中java的使用 (转)
ACM中java的使用 这里指的java速成,只限于java语法,包括输入输出,运算处理,字符串和高精度的处理,进制之间的转换等,能解决OJ上的一些高精度题目. 1. 输入: 格式为:Scanner ...
- 4.“写程序” 这个活动大多数情况下是个人行为。 我们听说的优秀程序员似乎都是单打独斗地完成任务。同学们在大学里也认识一些参加ACM 比赛的编程牛人, 他们写的ACM 比赛的程序是软件么? “写程序” 和 ”做软件“ 有区别么? 请采访这些学生。
ACM的题库的编程都只能算做程序,不能算软件.写程序和做软件区别还是很大的.程序是为实现特定目标或解决特定问题而用计算机语言编写的命令序列的集合.为实现预期目的而进行操作的一系列语句和指令.而软件是程 ...
- Java编程思想学习(八) 内部类
可以将一个类的定义放在另一个类的定义内部,这就是内部类. 内部类的定义是简单的,但是它的语法确实很是复杂,让人不是很好理解.下面就内部类做一个小结. 一.内部类的分类 总的来讲内部类分为普通内部类,匿 ...
- Java编程思想 (1~10)
[注:此博客旨在从<Java编程思想>这本书的目录结构上来检验自己的Java基础知识,只为笔记之用] 第一章 对象导论 1.万物皆对象2.程序就是对象的集合3.每个对象都是由其它对象所构成 ...
- Java编程的逻辑 (51) - 剖析EnumSet
本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http:/ ...
- 《Java编程思想第四版完整中文高清版.pdf》-笔记
D.2.1 安插自己的测试代码 插入下述“显式”计时代码,对程序进行评测: long start = System.currentTimeMillis(); // 要计时的运算代码放在这儿 long ...
- Java编程的逻辑 (95) - Java 8的日期和时间API
本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http: ...
随机推荐
- wxpython ItemContainer
ItemContainer 是 很多可以添加string item的部件的父类,封装很多有用的方法,可以用来获取部件的被选中item 的string 如wx.ListBox ,wx.CheckList ...
- IDEA建项目的正确姿势
今天建多模块的分布式项目的时候折腾死了,可能是建项目的方法不对,最后经过摸索,觉得这样是比较合适的: 首先建一个空的项目:Empty Project,就是项目文件夹 然后在里面建model
- C# 使用AutoResetEvent进行线程同步
AutoResetEvent 允许线程通过发信号互相通信. 通常,当线程需要独占访问资源时使用该类. 线程通过调用 AutoResetEvent 上的 WaitOne 来等待信号. 如果 AutoRe ...
- Xwindow的文章
http://blog.csdn.net/crond123/article/details/5733776 http://bbs.csdn.net/topics/90377015 http://bbs ...
- PHP5.4连接sqlserver
1.下载微软的php连接驱动:SQLSRV30.EXE(5.4对应,后面的native client要用2012)/SQLSRV20.EXE(5.3对应,native client要用2008)/SQ ...
- Unique Encryption Keys (思维题 预处理)
题目 题意:给m个数字, q次询问, 询问b到e之间如果有重复数字就输出, 没有就输出OK 思路:用f[i]数组 记录从i开始向后最近的有重复数字的 位置, 如 1 3 2 2, 则f[1] = 4; ...
- .net项目的svn Global ignore pattern
*.o *.lo *.la *.al .libs *.so *.so.[0-9]* *.a *.pyc *.pyo __pycache__ *.rej *~ #*# .#* .*.swp .DS_S ...
- bzoj2005: [Noi2010]能量采集
lsj师兄的题解 一个点(x, y)的能量损失为 (gcd(x, y) - 1) * 2 + 1 = gcd(x, y) * 2 - 1. 设g(i)为 gcd(x, y) = i ( 1 < ...
- 使用Java VisualVM监控远程JVM
我们经常需要对我们的开发的软件做各种测试, 软件对系统资源的使用情况更是不可少, 目前有多个监控工具, 相比JProfiler对系统资源尤其是内存的消耗是非常庞大,JDK1.6开始自带的VisualV ...
- hdu 4617 Weapon(叉积)
大一学弟表示刚学过高数,轻松无压力. 我等学长情何以堪= = 求空间无限延伸的两个圆柱体是否相交,其实就是叉积搞一搞 详细点就是求两圆心的向量在两直线(圆心所在的直线)叉积上的投影 代码略挫,看他的吧 ...