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: ...
随机推荐
- C++:纯虚函数与抽象类
5.4.3 纯虚函数和抽象类 纯虚函数是一个在基类中说明的虚函数,它在该基类中没有定义,但是要求在派生类中根据需要对它进行定义,或仍然说明为纯虚函数. 声明纯虚函数的一般格式是: virtual 函数 ...
- swift:类型转换(is用作判断检测、as用作类型向下转换)
类型转换是一种检查类实例的方式,并且哦或者也是让实例作为它的父类或者子类的一种方式. 类型转换在Swift中使用is 和 as操作符实现.这两个操作符提供了一种简单达意的方式去检查值的类型或者转换 ...
- 转AOP 介绍
来自:http://blog.csdn.net/a906998248/article/details/7514969 这篇也不错,详细介绍了CGLIP http://blog.jobbole.com/ ...
- org.json.JSONObject与com.google.gson.Gson
org.json库为JSON创始人编写的解析JSON的java库,Gson为Google为我们提供的解析JSON格式数据的库. Gson里最重要的对象有2个Gson 和GsonBuilder. Gso ...
- 01-语言入门-01-A+B Problem
题目地址: http://acm.nyist.net/JudgeOnline/problem.php?pid=1 描述 此题为练手用题,请大家计算一下a+b的值 输入 输入两个数,a,b 输 ...
- 函数rec_init_offsets
http://database.51cto.com/art/201303/383042.htm /*************************************************** ...
- MVVM设计模式《网摘》
MVVM模式能够帮你把你程序的业务与展现逻辑从用户界面干净地分离开.保持程序逻辑与界面分离能够帮助解决很多开发以及设计问题,能够使你的程序能更容易的测试,维护与升级.它也能很大程度的增加代码重用性,并 ...
- POJ 3090 (欧拉函数) Visible Lattice Points
题意: UVa 10820 这两个题是同一道题目,只是公式有点区别. 给出范围为(0, 0)到(n, n)的整点,你站在原点处,问有多少个整点可见. 对于点(x, y), 若g = gcd(x, y) ...
- apache开源项目-- Turbine
1.缘起 Jetspeed是Apache Jakarta小组的开放源码门户系统.它使得最终用户可以通过WAP手机.浏览器.PDA等各种设备来使用各种各样的网络资源(比如应用程序.数据以及这之外的任何网 ...
- oracle 回收站管理
oracle10g,在pl/sql中选中删除后会出现类似:BIN$nJ5JuP9cQmqPaArFei384g==$0的表. 1.查看回收站 select * from user_recyclebin ...