算法练习笔记(1)

1.大写转小写

String str1 = "QQQQ";
String str2 = str1.toLowerCase();

2.小写转大写

String str = "qqqqq";
String str2 = str1.toUpperCase();

3.字符串转Char型数组

String str = "5.456";
char arr[]=str.toCharArray();

4.字符串转double

String c = "5.45";
double d = Double.parseDouble(c);

5.sqrt() 方法用于返回参数的算术平方根

double a = Math.sqrt(6 * 6 + 9 * 9);

6.相遇问题:路程和=时间×速度和

路程差÷速度差=追及时间

7.开方

 int a=(int)Math.pow(3,3);
 //int是强制转换,如果不需要可以去掉
 a=27;

8.换行符

System.out.println(13 + "\n" + "R");

9.BigInteger类

Java中long型为最大整数类型,对于超过long型的数据如何去表示呢?在Java的世界中,超过lang型的整数已经不能被称为整数了,他们被封装成BigInteger对象,在BigInteger类中,实现四则运算都是用方法来实现,并不是采用运算符.

  //计算a+b的对象和,调用add方法
         BigInteger sum = a.add(b);
         //计算a-b对象的差,调用subtract方法
         BigInteger sub = a.subtract(b);
         //计算a*b对象的积,调用multiply方法
         BigInteger mul = a.multiply(b);
         //计算a/b对象商,调用方法divied方法
         BigInteger div = a.divide(b);
         //将参数转换为制定的类型
          int a=3;
          BigInteger b=BigInteger.valueOf(a);
          b=3;
         //基本常量:
         A=BigInteger.ONE    1
         B=BigInteger.TEN    10
         C=BigInteger.ZERO   0

10.&&和&、||和|

if(a==1&&b==2)//这是说既要满足a=1也要满足b=2
if(a==1||b==2)//这是说或者满足a=1或者要满足b=2
//&如果相对应位都是1,则结果为1,否则为0
//|如果相对应位都是 0,则结果为 0,否则为 1

11.公历年份是4的倍数的,一般都是闰年。但公历年份是整百数的,必须是400的倍数才是闰年。

if ((nn%4==0)&&(nn%100!=0)||nn%400==0) {
			run = true;
   }

12.System.out.printf格式化输出

 //%代表格式化
 //f代表输出浮点数,9代表输出长度,如果浮点数长度不足,则补空格,如果浮点数长度超出,则按实际长度输出,2代表保留小数点后几位小数
 System.out.printf("%9.2f",1111.3);
 //-号代表向左对齐,默认向右对齐
 System.out.printf("%-9.2f", 1111.3);
 //+号代表显示正负号
 System.out.printf("%+9.2f", 1111.3);
 //+-号代表显示正负号,且向左对齐
 System.out.printf("%+-9.2f", 1111.3);
 //d代表输出整数
 System.out.printf("%4d",15);
 //o代表输出8进制整数
 System.out.printf("%-4o",15);
 //x代表输出16进制整数
 System.out.printf("%-4x",15);
 //#x代表输出带有16进制标志的整数
 System.out.printf("%#x",15);
 //s代表输出字符串
 System.out.printf("%-8s", "我们是中心");
 //x$,整数加$表示第几个变量,如果不加,变量按默认顺序排列
 System.out.printf("%2$-5s:夺得世界杯总冠军,进球数:%1$3d,对方进球:%3$2d", 4,"法国",2);
 //输入多个值
 double sum3 = 1.0*sum1/s1;
 double sum4 = 1.0*sum2/s2;
 System.out.printf("%.1f %.1f",sum3,sum4);

13.单精度和双精度的取值范围和精度是不同的

单精度:float的精度是6位有效数字,
取值范围是10的-38次方到10的38次方,float占用4字节空间
双精度:double的精度是15位有效数字,
取值范围是10的-308次方到10的308次方,double占用8字节空间。

14.Java大数类的RoundingMode(舍入模式)

//java.math.RoundingMode:这是一种枚举类型,它定义了8种数据的舍入模式。
//它与java.math.BigDecimal类中定义的8个同名静态常量的作用相同,
//可用BigDecimal.setScale(int newScale, RoundingMode roundingMode)来设置数据的精度和舍入模式。
  int newScale = 4;//设置位数
  int RoundingMode_roundingMode = 4 ;//表示四舍五入,可以选择其他舍值方式,例如去尾
  BigDeciaml bd = new BigDecimal((double)IMB);//BigDecimal(int/double/long/String)
  bd = bd.setScale(newScale,RoundingMode_roundingMode);
  IMB = bd.floatValue();
  //floatValue是获得这个Float对象的float值。

15.Math.ceil和Math.floor

Math.ceil(double value)
Java Math ceil()方法将指定的double值向上舍入并返回。(向上取整)
取整后的值应等于数学整数。也就是说,值3.4应该四舍五入为4.0,等于整数4Java Math floor()方法(向下取整)3.4应该四舍五入为3.0,等于整数3

16.java换行键盘输入

问题:Scanner 的next()或nextInt()与nextLine()连续调用时出现的问题
nextInt()不会读取换行符;next()划分每个元素的标准是:空格、制表符、或者换行符。
所有元素均有这三种情况分割开来,其所有返回的值均为String类型
nextInt()输入option值,之后用户输入换行符想要结束
可是nextInt()方法并不会读取换行符
因此换行符被读取放到了下一个nextLine()中,nextLine()读取换行符
解决方法:再定义一个,专门读取换行符

String s = src.nextLine();
(换行符--->回车键)

17.Java charAt() 方法

//可实现通过键盘输入字符串,再通过charAt(0),获取一个字符
//charAt() 方法用于返回指定索引处的字符。索引范围为从 0 到 length() - 1。
字符串的查找
 String s = "xXccxxxXX";  
 // 从头开始查找是否存在指定的字符         //结果如下   
  System.out.println(s.indexOf("c"));     //2  
  //没有找到就返回-1

18.String类方法汇总

String a;
a = "123345abcde我最帅  

18.1int length()获取字符串长度

int a1 = a.length();
System.out.println(a1);

18.2char charAt(索引)从字符串中取出指定位置的字符 ,返回值为 char 类型

char a2 = a.charAt(2);
System.out.println(a2);

18.3char toCharArray()返回值为 char 数组类型。将字符串变成一个字符数组

char[] a3 = a.toCharArray();
System.out.println(a3[0]);

18.4字符串名.indexOf(“字符”)或者字符串名.indexOf(“字符”,索引);查找一个指定的字符串是否存在,返回的是字符串的位置,如果不存在,则返回-1。

int a4 = a.indexOf("2");
int a44 = a.indexOf("2", 1);// 从索引1开始查
System.out.println(a4);
System.out.println(a44);

18.5toUpperCase() toLowerCase()字符串大小写的转换

String a5 = a.toUpperCase();// 转大写
String a55 = a.toLowerCase();// 转小写

18.6String[] split(“字符”)根据给定的正则表达式的匹配来拆分此字符串。形成一个新的String数组。

String[] a6 = a.split("3");
System.out.println(a6[0] + " " + a6[1] + "" + a6[2]);

18.7equals语法 :字符串变量名.equals(字符串变量名); 返回值为布尔类型。

String a7 = "123345abcde我最帅";
if (a.equals(a7)) {
System.out.println("两字符串相等");
}

18.8trim()去掉字符串左右空格replace(char oldChar,char newChar);新字符替换旧字符,也可以达到去空格的效果一种。

System.out.println(a.trim());
System.out.println("去掉左右空格后:" + a.replace(" ", ""));

18.9String substring(int beginIndex,int endIndex) 截取字符串

String a9 = a.substring(3);// 从索引3开始截取
String a99 = a.substring(3, 6);// 从索引3开始截取,索引6结束,不包括索引6

18.10boolean equalsIgnoreCase(String) 忽略大小写的比较两个字符串的值是否一模一样,返回一个布尔值

String a10 = "HELLO WORLd";
String a11 = "hello world";
if (a10.equalsIgnoreCase(a11)) {
System.out.println("两个字符串的值是一模一样");
}

18.11boolean startsWith(String)测试此字符串是否以指定的前缀开始。返回一个布尔值

// boolean endsWith(String) 测试此字符串是否以指定的后缀结束。返回一个布尔值
if (a.startsWith("1")) {
System.out.println("以1为前缀");
}
if (a.endsWith("帅")) {
System.out.println("以帅为后缀");
}

18.12上面提到了replace方法,接下继续补充一下 String replaceAll(String,String) 将某个内容全部替换成指定内容,

// String repalceFirst(String,String) 将第一次出现的某个内容替换成指定的内容
String a12 = ",,,,,,我我,,,,, ";
System.out.println("改变后:" + a12.replaceAll(",", "a"));
// 结果 a,,,,,我啊我,,,,,
String a1212 = ",,,,,,我我,帅吗,帅吗,,,,, ";
System.out.println("改变后:" + a1212.replaceFirst("帅吗", "很帅哦"));
// 结果 ,,,,,,我啊我,很帅哦,帅吗,,,,,

你可能感兴趣的:(算法,java)