java.lang.string.split
split 方法 将一个字符串分割为子字符串,然后将结果作为字符串数组返回。
stringObj.split([separator,[limit]])
stringObj 必选项。要被分解的 String 对象或文字。该对象不会被 split 方法修改。
separator 可选项。字符串或 正则表达式 对象,它标识了分隔字符串时使用的是一个还是多个字符。如果忽 略该选项,返回包含整个字符串的单一元素数组。
limit 可选项。该值用来限制返回数组中的元素个数。
说明: split 方法的结果是一个字符串数组,在 stingObj 中每个出现 separator 的位置都要进行分解 。separator 不作为任何数组元素的部分返回。
示例1: public class SplitDemo {
public static String[] ss = new String[20];
public SplitDemo() {
String s = "The rain in Spain falls mainly in the plain."; // 在每个空格字符处进行分解。 ss = s.split(" "); }
public static void main(String[] args) {
SplitDemo demo = new SplitDemo(); for (int i = 0; i < ss.length; i++) System.out.println(ss[i]); }
}
程序结果: The rain in Spain falls mainly in the plain.
还有一些例子在blog.csdn.net/pengzonglu7…
找不到主类:包名写错了 main函数没写
next()与nextLine()区别: Scanner是一个扫描器,我们录取到键盘的数据,先存到缓存区等待读取,它判断读取结束的标示是 空白符;比如空格,回车,tab 等等。
next()方法读取到空白符就结束;
nextLine()读取到回车结束也就是“\r”;
所以没还顺序前测试的时候next()再检测的空格的时候就结束输出了。
区别:
1)replace的参数是char和CharSequence,即可以支持字符的替换,也支持字符串的替换(CharSequence即字符串序列的意思,说白了也就是字符串);
2)replaceAll的参数是regex,即基于正则表达式的替换,比如,可以通过replaceAll("\d", "*")把一个字符串所有的数字字符都换成星号;
相同点:
都是全部替换,即把源字符串中的某一字符或字符串全部换成指定的字符或字符串,如果只想替换第一次出现的,可以使用replaceFirst(),这个方法也是基于规则表达式的替换,但与replaceAll()不同的是,只替换第一次出现的字符串;
另外,如果replaceAll()和replaceFirst()所用的参数据不是基于规则表达式的,则与replace()替换字符串的效果是一样的,即这两者也支持字符串的操作;
还有一点注意::执行了替换操作后,源字符串的内容是没有发生改变的。
package com.atguigu.contact; import java.util.Scanner;
import java.lang.String;//与 java.util.Arrays;相同 可以不写
public class Test { public static void main(String[] args) { String s = "Today is a good day"; String[] ss = new String[20]; ss=s.split(" "); for (int i =0;i<5;i++) { System.out.println(ss[i]); } Scanner input = new Scanner(System.in); String s1 = input.nextLine(); input.close(); s.replace("a","b");//这里必须写在输出里面,因为s不会改变,只会重新创建一个 System.out.println(s1.replaceAll("a", "b"));
}
}
后缀表达式
规则:从左到右遍历表达式的每个数字和符号,遇到是数字就进栈,遇到是符号,就将处于栈顶两个数字出栈,进行运算,运算结果进栈,一直到最终获得结果。
9 3 1-3*+ 10 2/+ = 20 想象以前做加减法都是从前往后,现在是后面进栈的进行计算
A & 1 等价于 A % 2 用&的方式更加酷炫而已 可以用1111举例子
BigInteger类型的数字范围较Integer,Long类型的数字范围要大得多,它支持任意精度的整数,也就是说在运算中 BigInteger 类型可以准确地表示任何大小的整数值而不会丢失任何信息。
char[] ch = s.toCharArray();
String s= "hello";
char[] ch = s.toCharArray();//
for (char c:ch)
{
System.out.println(c);//其实与.charAt(i)没什么区别
使用BigInteger之前要import java.math.BigInteger
public void testBasic() { BigInteger a = new BigInteger("13"); BigInteger b = new BigInteger("4"); int n = 3;
//1.加
BigInteger bigNum1 = a.add(b); //17
//2.减
BigInteger bigNum2 = a.subtract(b); //9
//3.乘
BigInteger bigNum3 = a.multiply(b); //52
//4.除
BigInteger bigNum4 = a.divide(b); //3
//5.取模(需 b > 0,否则出现异常:ArithmeticException("BigInteger: modulus not positive"))
BigInteger bigNum5 = a.mod(b); //1
//6.求余
BigInteger bigNum6 = a.remainder(b); //1
//7.平方(需 n >= 0,否则出现异常:ArithmeticException("Negative exponent"))
BigInteger bigNum7 = a.pow(n); //2197
//8.取绝对值
BigInteger bigNum8 = a.abs(); //13
//9.取相反数
BigInteger bigNum9 = a.negate(); //-13
}
类型 BigInteger 中的方法 remainder(BigInteger)对于参数(int)不适 用 这里不是很懂但是pow(int)可以
蓝桥杯:是否被一个数整除看的是余数 所以%
class Boy { int age; } class Girl { int age; public int compare(Boy boy) { return Math.max(age, boy.age );//可以不必再重新创造一个class来放入此方法 } }
package com.atguigu.contact; import java.util.Scanner;
import java.lang.String;//与 java.util.Arrays;相同 import java.math.BigInteger;
public class Test { public static void main(String[] args) { Customer person = new Customer("Jane","Smith"); person.setAccount(1000,0.0123,2000,100,960,2000); person.getAccount();
}
} class Account { private int id; private double balance; private double annualInterestRate; public int getId() { return id; } public void setId(int id) { this.id = id; } public double getBalance() { return balance; } public void setBalance(double balance) { this.balance = balance; } public double getAnnualInterestRate() { return annualInterestRate; } public void setAnnualInterestRate(double annualInterestRate) { this.annualInterestRate = annualInterestRate; } public void withdraw(double amount) { if(balance>amount) { System.out.println("取钱成功"); balance-=amount; }else { balance-=amount; System.out.println("余额不足请充值"); }
}
public void deposit(int money)
{
balance+=money;
}
} class Customer { private String firstName; private String lastName; private Account account;//这里只写了前面一半 相当与int i 后面的=1 为 this.account=account(形参) public Customer(String f,String l) { f=firstName; l=lastName; } public String getFirstName() { return firstName; } public String getLastName() { return lastName;
}
public void setAccount(int id,double annual,int balance,int cun,double qu, double quqian)
{
account = new Account();//必须新建 下面才能调用
//account.id=id;//????因为这里不能调用
account.setId(id);//不用new也行????
account.setAnnualInterestRate(annual);
account.setBalance(balance);
account.deposit(cun);
account.withdraw(qu);
account.withdraw(quqian);
}
public void getAccount()//这里可以修改为 public Account getAccount() 再return Account 最后调用时person.getAccount().id
{
System.out.println(account.getAnnualInterestRate());
System.out.println(account.getBalance());
System.out.println(account.getId());
}
}
3.7
下次private全部属性之后直接快捷键把get set创建出来
package com.atguigu.contact;
class Test { public static void main(String[] args) { Bank bank = new Bank(); bank.addCustomer("Jane","Smith"); Account one = new Account(2000); bank.getCustomer(0).setAccount(one);//Customer[0]的账户 bank.getCustomer(0).getAccount().withdraw(500); System.out.println(bank.getCustomer(0).getAccount().getBalance()); System.out.println(bank.getCustomer(0).getLastName()); } } class Account { private double balance; public Account(double balance) { this.balance=balance; } public double getBalance() { return balance; } public void deposit(double amt) { balance+=amt; } public void withdraw(double amt)//没想到上下两个形参可以一样(想象重载) { if(amt>balance) { System.out.println("余额不足,请充值"); }else { balance-=amt; } } } class Customer { private String firstName; private String lastName; private Account account;//这里只写了前面一半 相当与int i 后面的=1 为 this.account=account(形参) public Customer(String f,String l) { f=firstName;//这里赋值反了 l=lastName; } public String getFirstName() { return firstName; } public String getLastName() { return lastName;
}
public Account getAccount()
{
return account;
}
public void setAccount(Account account)//这里是巧妙地将两个类结合再一起
{
this.account=account;//设置上面地private Account地原因
}
} class Bank//这个类就没有声明什么银行了而是在用customer { private Customer[] customer=new Customer[100];//与上面private Accoun一样都是为了调用 private int numberOfCustomer=0; public Bank() {
}
public void addCustomer(String f,String l)
{
Customer cust = new Customer(f,l); //customer=new Customer[4];//这里想象main中也是这么用的其它类的构造器
// customer[3].getFirstName()=f; // customer[3].getLastName()=l; //customer[3]= new Customer(f,l);//这里不熟练 黑色是修改后地 customer[numberOfCustomer]=cust; numberOfCustomer++; } public int getNumberOfCustomer() { return numberOfCustomer; } public Customer getCustomer(int index) { return customer[index]; } }
package:
1实现类的管理
2包名都小写
3每.一次都是一层目录
4不同包下可以命名同名的接口与类()因为此时目录不同
java.lang默认添加 lang表language
不用学awt swing
MVC M:模型层 有很多数据 可供调用V:视图层 例如微信上的联系人 下面的朋友圈之类的有图案 长宽的,C:控制层 将M中的数据装入V中其实除了M和V之外的东西好像都是C