主方法入口:所有的Java 程序由public static void main(String[] args) 方法开始执行。
输入流格式
创建输入输出流对象:
Scanner reader=new Scanner(System.in); (需要引入,格式为:import java.util.Scanner;)
常用next 方法:
nextInt():输入整数 nextLine():输入字符串 nextDouble():输入双精度数 next():输入字符串(以空格作为分隔符)。Scanner scanner = new Scanner(System.in);
int i = Int();
btye b = Byte();
short s = Short();
long l = Long();
double d = Double();
String str = ();
输出流格式
System.out.println(); 把括号里的内容转换成字符串输出,并且换行,当输出的是一个基本数据类型时,会自动转换成字符串,如果输出的是一个对象,会自动调用对象的toString 方法。
System.out.print(); 与第一个很相似,区别就是上一个输出后会换行,而这个命令输出后并不换行。
String 类和StringBuffer 类
String 为字符串的常量而,StringBuffer 是字符串的变量。
String s=new String("test")
s=s+"test" //此处String 销毁又创建
equals():比较两个字符串是否相等
equalsIgnoreCase( ):忽略大小写的两个字符串是否相等比较
toString():转换成String 类型
String.valueOf():转换成String 类型
split():分隔符
subString():截取字符串中的一段字符串charAt():返回指定索引处char 值
String str = "abc";StringBuffer sb = new StringBuffer(str);sb.append("def");//末尾添加字符串sb.insert(3, "ggg");//在某个位置插入字符sb.setCharAt(0, 'x');// 修改某个位置的字符sb.deleteCharAt(1);//删除某个位置的字符sb.delete(1, 2);// 从某个位置开始删除,直到某个位置之前为止sb.reverse();//翻转
数组
数据类型[] 数组名称= new 数据类型[长度];
int [ ] intArray=new int[3];
获取数组长度:intArry.length
二维数组,直接为每一维分配空间: int [ ][ ]a = new int[2][3];
定义
默认不加public 为private 变量。
extend 关键字用作继承:
class 父类{}
class 子类extends 父类{}
使用implements 关键字可以同时继承多个接口(接口跟接口之间采用逗号分隔)。
public interface A {
public void eat();
public void sleep();
}
public interface B {public void show();}
public class C implements A,B {}
super 关键字:我们可以通过super 关键字来实现对父类成员的访问,用来引用当前对象的父类。
使用super 调用父类的有参构造
JAVA
2021年11月17日19:02
Static
静态成员变量 (类变量),在类被载入时创建,为类的各对象共享
引用:类名.静态成员变量名 或对象名.静态成员变量名
静态方法(类方法),不必创建对象就可以调用
引用:类名.静态方法名( ) 或对象名.静态方法名( )
静态代码块
类中不包含在任何方法体中, 用static{ }描述的一段代码。类被载入时执行,仅执行一次
Static{代码}
多态与动态绑定
父类引用变量赋值给子类引用变量(强制转换)
Employee boss=new Manager(…);
Manager m=(Manager)boss;//强制转换
m.setBonus(…);//需要使用子类中的方法
instanceof : 引用变量 instanceof 类名(判断对象是否是某一类或该类的子类)
Employee m=new Manager( );
Manager n;
if(m instanceof Manager)
n=(Manager)e ;
抽象类
不包含方法定义的方法称为抽象方法。任何包含抽象方法的类必须声明为抽象类(C++抽象类)例:abstract class Shape{ public abstract double area( );}
object类
可以使用Object引用变量引用任何类型的对象
重写equals方法,(检测一个对象是否等于另一个对象)
//Employee类:假定姓名、薪水、雇佣日期相同则认为它们相等
public boolean equals(Object otherObject)//注意类型
{
if(this==otherObject) return true;//是否引用同一个对象
if(otherObject==null) return false;//是否为空
if(getClass()!=Class()) return false;//是否属于同一类
Employee other=(Employee)otherObject;
return ….//这里开始比较属性
}
toString方法,返回表示对象值的字符串 ,一般的类的实现为:类名[成员变量值]
当出现 字符串+对象 时,将自动调用toString方法
public String toString( )
{
return “Employee[name=”+name+“,salary=”+salary+“,hireDay=”+hireDay+”]”; }
框架显示信息
JFrame():构造一个初始时不可见的新窗体。
JFrame(String title):创建一个具有title 指定标题的不可见新窗体。
import javax.swing.JFrame;
import javax.swing.JLabel;
import java.awt.*;
public class JFrameDemo extends JFrame
{
public JFrameDemo()
{
setTitle("Java 第一个GUI 程序"); //设置显示窗口标题
setSize(400,200); //设置窗口显示尺寸
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //置窗口是否可以关闭 JLabel jl=new JLabel("这是使用JFrame类创建的窗口"); //创建一个标签
Container c=getContentPane(); //获取当前窗口的内容窗格
c.add(jl); //将标签组件添加到内容窗格上
setVisible(true); //设置窗口是否可见
}
public static void main(String[] agrs)
{
new JFrameDemo(); //创建一个实例化对象
}
}
JPanel 是一种中间层容器,它能容纳组件并将组件组合在一起,但它本身必须添加到其他容器中使用。import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import java.awt.*;
public class JPanelDemo
{
public static void main(String[] agrs)
{
JFrame jf=new JFrame("Java第二个GUI程序"); //创建一个JFrame对象
jf.setBounds(300, 100, 400, 200); //设置窗口大小和位置
JPanel jp=new JPanel(); //创建一个JPanel对象
JLabel jl=new JLabel("这是放在JPanel上的标签"); //创建一个标签
jp.setBackground(Color.white); //设置背景
jp.add(jl); //将标签添加到面板
jf.add(jp); //将面板添加到窗口
jf.setVisible(true); //设置窗口可见
}
}
2D图形
直线:
Line2D line=new Line2D.Double(startx,starty,endx,endy);
g2.draw(line);
矩形:
//使用左上顶点的坐标、宽度和高度
Rectangle2D doubleRect=new Rectangle2D.Double(startx,starty,width,height);
//使用对角线上的两个顶点
Rectangle2D doubleRect=new Rectangle2D.Double( );
doubleRect.setFrameFromDiagonal(x1,y1,x2,y2);
椭圆:
//使用外接矩形的左上顶点坐标、宽度和高度
Ellipse2D e=new Ellipse2D.Double(startx,starty,width,height);
//如果已经有外接矩形
Ellipse2D e=new Ellipse2D.Double( );
e.setFrame( rect);
//使用中心点和一个顶点坐标
e.setFrameFromCenter(centerx,centery,x1,y1 );
弧:
//使用左上顶点的坐标、宽度、高度、起始角度和跨度、闭合类型
Arc2D a=new Arc2D.Double(startx,starty,width,height,startangle,extent ,arcangle,type );
简易的文本框输入到文件
import java.io.*;
import javax.swing.*;
import java.awt.FlowLayout;
import java.awt.event.*;
public class WriterTo extends JFrame implements ActionListener{
JButton b;JTextField t;
public WriterTo(){
super("文本框内容写入文件");
JLabel l=new JLabel("请输入内容:");
t=new JTextField(20);
b=new JButton("写入");
b.addActionListener(this);
this.add(l);this.add(t);this.add(b);
this.setLayout(new FlowLayout());
this.setLayout(new FlowLayout());
this.pack();
this.setVisible(true);
}
public void actionPerformed(ActionEvent e) {
Source()==b){
Text().equals("")){
JOptionPane.showMessageDialog(null,"请输入内容~","错误",JOptionPane.ERROR_MESSAGE);
}else{
Text());
JOptionPane.showMessageDialog(null,"写入成功","提示",JOptionPane.INFORMATION_MESSAGE);
}
}
}
public void write(String line){
try{
File f=new File("c:/文本框.txt");//向指定文本框内写入
FileWriter fw=new FileWriter(f);
fw.write(line);
fw.close();
}catch(Exception e){ }
}
public static void main(String[] args) {new WriterTo();}
}
异常处理
try
{
//代码块,在此区域内发生的异常,
//由catch中指定代码处理
}
catch(ExceptionType e)
{
//处理异常的代码
}
finally{
}
如果在try中任何代码抛出了ExceptionType异常,则程序跳过try语句的其余代码,程序将执行
catch子句中的处理代码。如果在try中没有抛出异常,则跳过catch语句。
finally(一定会执行的程序块)
继承Thread类
定义一个线程类,它继承线程类Thread并重写其中的方法run(), 在run方法中给出想在新线程上运行的程序代码。启动线程: 创建自定义类的对象,然后使用start( )启动。start方法将产生一个新的线程,并在该线程上运行run方法。run方法执行完成后,线程也将结束。
class MyThread extends Thread{
public void run( ){//task code}
}
MyThread t=new MyThread( );
t.start();
实现Runnable接口
编写实现了Runnable接口的类,实现run方法,在run方法中给出想在新线程上运行的程序代码。
启动线程:需要创建自定义类的对象和Thread对象(将自定义类的对象作为参数传递给Thread的构造方法),然后使用start( )。
class MyClass implements Runnable{
public void run( ){//task code}
}
MyClass r=new MyClass( );
Thread t=new Thread(r);
t.start( );
Synchronized
修饰一个代码块,被修饰的代码块称为同步代码块,作用范围是大括号{}括起来的代码
public void method()
{
nextint()方法{
synchronized(this) {
// todo some thing
}
}
生产者消费者问题
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Scanner;
import urrent.TimeUnit;
class database{
private String str;
boolean flag = false;
public synchronized void PutString(String x){
if(flag){
try{wait();}
catch(InterruptedException e){e.printStackTrace();} }
str = x;
flag = true;
notify();
}
public synchronized boolean GetString(){
if(!flag){
try{wait();}
catch(InterruptedException e){e.printStackTrace();}
}
str = new StringBuilder(str).reverse().toString();
if(str.equals(" "))return false;
System.out.print(str + " ");
flag = false;
notify();
return true;
}
}
class ProducterThree implements Runnable{
private database db;
private String[] str;
ProducterThree(database db, String[] x){
this.db = db;
str = x;
}
public void run(){
for(int i = 0; i < str.length; i++)
this.db.PutString(str[i]);
this.db.PutString(" ");
}
}
class CustomerThree implements Runnable{
private database db;
CustomerThree(database db){
this.db = db;
}
public void run(){
while(true){
if(!this.db.GetString())break;
try{TimeUnit.MILLISECONDS.sleep(100);}
catch(Exception e){e.printStackTrace();}
}
}
}
public class Main{
public static void main(String args[]){
BufferedReader br = new BufferedReader(new
InputStreamReader(System.in));
String[] str = null;
try {str = br.readLine().split(" ");
} catch (Exception e) {e.printStackTrace();}
database db = new database();
new Thread(new ProducterThree(db, str)).start();
new Thread(new CustomerThree(db)).start();
}
}
创建删除文件
String path = "F:\\test";
File myFile = new File(path);
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论