易错考点:
1.通过类名不可以调用实例方法,可访问静态成员。
2.通过对象名可以访问静态成员,和非静态成员。
3.静态方法不能直接调用非静态方法,而实例方法可访问静态方法。
4.自定义类时不允许定义如下方法public void toString() { }。
因为toString方法是内置在Object中的方法,重写的方法必须和父类一模一样。
重载:1.在同一个类中。2.方法名必须相同。3.与修饰符和返回值无关,不能修改。4.可修改参数列表,通过改变参数的类型、顺序、个数)进行重载。
重写:1.必须和父类方法一模一样。2.子类的方法权限必须大于等于父类的方法权限。
基础知识点:import java.awt.print.Printable;
import java.util.Arrays;
import java.util.Scanner;
class Main{
public static void main(String[] args) {
double a=3.1415926;
System.out.printf("%.4f",a); //C语言输出
Scanner sc=new Scanner(System.in);
int b=sc.nextInt();
sc.nextLine(); //吸收换行符及本行之后字符
String s=sc.nextLine();
System.out.println(b+" "+s);
int[] c=new int[] {1,2,3,4,5};
System.out.println(Arrays.toString(c)); //数组转化为String类型输出
int[] d=Arrays.copyOf(c, 3);
System.out.println(Arrays.toString(d));
}
}
自定义异常类:
class Main{
public static void main(String[] args) throws Myexception { //抛出自己写的异常
Scanner sc=new Scanner(System.in);
int a=sc.nextInt();
if(a>0)
System.out.println("输入年龄合法。");
else {
throw new Myexception("非法年龄");
}
}
}
class Myexception extends Exception
{
public Myexception() {
// TODO Auto-generated constructor stub
}
Myexception(String s){
super(s);
}
}
常用系统类
public class Main {
public static void main(String[] args) {
int a=Integer.parseInt("123",8); //其他进制转化为十进制,返回类型为整数类型
System.out.println(a);
String b=Integer.toString(83,8); //十进制转化为其他进制,返回类型为String
int b1=Integer.parseInt(b); //字符串转为其他类型
System.out.println(b1);
String s="abcdefgh";
s=s.replace("a", "b"); //替换
int k=s.indexOf("bdd"); //查询子串
System.out.println(k);
System.out.println(s);
StringBuffer s1=new StringBuffer(s); //转为Stringbuffer,可变字符串
s1.append("ttt");
System.out.println(s1);
System.out.println(s1.reverse()); //翻转
s1.replace(0, 3, "aaa"); //指定范围(左闭右开)替换
System.out.println(s1);
s1.toString();
System.out.println(s1+"-------------");
BigInteger x=new BigInteger("123456789"); //大数计算
BigInteger y=new BigInteger("123456789");
BigInteger z=x.multiply(y);
System.out.println(z);
double g=3.1415926;
System.out.printf("%5.2fn",g); //日期格式化
Date now=new Date();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy:MM:dd hh:mm:ss");
System.out.println(sdf.format(now));
Calendar calendar=Calendar.getInstance();
System.out.println(calendar.getTime());
System.out.println(sdf.format(calendar.getTime()));
}
}
栈的应用 括号匹配
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
Stack st=new Stack<>();
String s=sc.next();
int flag=0;
for(int i=0;i
if(s.charAt(i)=='('||s.charAt(i)=='[')
st.push(s.charAt(i));
else {
if(st.empty()==true){
flag=1;
break;
}
Character c=st.pop();
if(s.charAt(i)==')'&&c=='(')
continue;
else if(s.charAt(i)==']'&&c=='[')
continue;
else {
flag=1;break;
}
}
}
if(st.empty()==true&&flag==0)
System.out.println("YES");
else {
System.out.println("NO");
}
}
}
Set集合中只有TreeMap才可以自定义排序
无法使用Collections.sort
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
Stu s1 = new Stu("20170001", "张三", 90);
Stu s2 = new Stu("20170003", "王五", 78);
Stu s3 = new Stu("20170002", "李四", 85);
Stu s4 = new Stu("20170001", "张三", 90);
Set set=new TreeSet<>();
set.add(s1);
set.add(s2);
set.add(s3);
set.add(s4);
for(Stu s:set)
System.out.println(s);
}
}
class Stu implements Comparable
{
private String sno;
private String sname;
private int score;
public Stu(String sno, String sname, int score) {
super();
this.sno = sno;
this.sname = sname;
this.score = score;
}
@Override
public int hashCode() {
return Objects.hash(sno);
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Stu other = (Stu) obj;
return Objects.equals(sno, other.sno);
}
@Override
public String toString() {
return "sno=" + sno + " sname=" + sname + " score=" + score;
}
@Override
public int compareTo(Stu o) {
// TODO Auto-generated method stub
return o.sno.compareTo(this.sno);
}
}
List排序四种方式:
1.类实现接口Comparable,内部定义CompareTo方法,Collections进行排序。
2.定义比较器类,定义排序规则
3.自定义类写成匿名类的形式。
4.lambda表达式,适用于简单的排序方式。
1.定义好map的数据。
2.将map中的Map.Entry放到list容器中,调用匿名类进行排序。
int n=sc.nextInt();
Map map = new LinkedHashMap();
for(int i=1;i<=n;i++)
{
String s=""+i;
StringBuffer s1 = new StringBuffer(s);
String s2=s1.reverse().toString();
int tmp= Integer.parseInt(s2);
map.put(i,tmp);
}
List> list = new ArrayList>(map.entrySet());
Collections.sort(list,new Comparator>() {
public int compare(Map.Entry o1,
Map.Entry o2) {
if(o1.getValue()==o2.getValue())
return o1.getKey()-o2.getKey();
return o2.getValue()-o1.getValue();
}
类和对象 例题
public class Test {
public static void main(String[] args) {
Circle c=new Circle(3);
System.out.println(c.toString());
Rectangle r=new Rectangle(7, 5);
System.out.println(r.toString());
}
}
interface ShaprArea {
double getArea();
double getPerimeter();
}
class Circle implements ShaprArea
{
double r,area,per;
Circle() {}
Circle(double r){
this.r=r;
area=r*r*Math.PI;
per=2*r*Math.PI;
}
@Override
public double getArea() {
return area;
}
@Override
public double getPerimeter() {
return this.per;
}
@Override
public String toString() {
return "半径=" + r + ", 面积=" + String.format("%.2f", area) + ", 周长=" + String.format("%.2f", per) ;
}
}
class Rectangle implements ShaprArea
{
int w,l,area,per;
public Rectangle(int w,int l) {
this.w=w;
this.l=l;
this.area=w*l;
this.per=2*(w+l);
}
@Override
public double getArea() {
return area;
}
@Override
public double getPerimeter() {
return per;
}
@Override
public String toString() {
return "Rectangle [w=" + w + ", l=" + l + ", area=" + area + ", per=" + per + "]";
}
}
输入输出 利用数组
public class Test {
public static void main(String[] args) throws Exception {
InputStream is=new FileInputStream(new File("e:/1.txt"));
OutputStream os=new FileOutputStream(new File("e:/2.txt"),true);
byte[] by=new byte[1023];
int len=0;
while((len=is.read(by))!=-1) {
System.out.println(len);
os.write(by,0,len);
}
is.close();
os.close();
}
}



