一、方法
基本数据类型
//形参:用于接收实际参数的变量
//实参:实际参与运算的变量
import java.util.Arrays;
public class Test {
public static void main(String[] args) {
int x = 10;
int y = 5;
System.out.println("x:" + x +",y:" + y);//10,5
changeNumber(x,y);//调用方法,运行changeNumber,调用完释放
System.out.println("x:" + x +",y:" + y);//x:10,y:5;
}
//形参的改变不会引起实参的改变,基本数据类型
public static void changeNumber(int x,int y){
y = x;
y = x + y;
System.out.println("x:" + x +",y:" + y);//x:10;y:20第二个
}
}
引用数据类型
import java.util.Arrays;
/**
- 引用数据类型:数组,放在堆中
- 方法参数:引用数据类型,形参改变会引起实参改变
- @author Administrator
*
*/
public class MethodTest {
public static void main(String[] args) {
//定义数组
int[] arr = {1,2,5};
//遍历元素
for(int i = 0; i < arr.length; i++){
System.out.println(arr[i]);
}
//调用方法
changeNumber(arr);
for(int i = 0; i < arr.length; i++){
System.out.println(arr[i]);
}
System.out.println(Arrays.toString(arr));
}
public static void changeNumber(int[] arr){
for(int i = 0; i < arr.length; i++){
if(arr[i]%2 == 0){
arr[i] *= 3;//取到偶数*3
}
}
}
}
面向对象
1、面向对象思想
A、面向过程
- 强调的是过程,所有事情都需要自己完成
B、面向对象 根据客户需求, 高内聚,低耦合
- 是一种更符合我们思想习惯的思想(懒人思想)
- 可以将复杂的问题简单化(对使用者说简单了,对象里面还是复杂的)
- 将我们从执行者变成了指挥者
定义类的成员变量
类的定义包括“成员变量‘的定义和”方法“的定义,用于描述对象的行为,封装对象的功能。
成员变量在哪定义,作用域
- 求和的重载
- 就近原则:char类型转化为int类型
- Java中方法的调用参考两点:1)方法签名2)就近原则
- System.out.println()也是一个重载
- @author Administrator
class Adds{
public int add;
public class AddDemo {
public void main(String[] args) {
Adds ad = new Adds();
System.out.println(ad.add +('0',5));
}
}
//void无返回值;int有返回值
public int add(int x ,int y){
System.out.println("1-");
return x + y;
}
public int add(int x){
System.out.println("2-");
return x + x;
}
public double add(double x, double y){
System.out.println("3-");
return x + y;
}
//add(int y, int x)跟上边一样,方法重复
// public int add(int y,int x){
// return x + y;
// }
//}
练习
/**
- 手机类:
- 型号:String
- 颜色:String
- 给name打电话,
- 发name发短信,
- @author Administrator
*构造方法:(构造器)
*1、构造方法声明在类内部
*2、方法名与类名相同
*3、不能声明返回值类型
*4、构造方法可以包含参数,参数一般是创建对象实例所依赖的条件
*如果不写构造方法:系统会默认提供一个无参构造
*/
public class Phone {
//成员变量
String name;
String color;
//构造方法
//无参构造
public Phone(){
}
//有参构造
public Phone(String name, String color){
this.name = name;
this.color = color;
}
//方法
public void call(String name){
System.out.println("给" + name + "打电话");
}
public void faDuanXin(String name){
System.out.println("给" + name + "发短信");
}
public void printPhoneInfo(){
System.out.println("手机:" + name + "颜色:" + color);
}
}
测试类
public class Cha {
public static void main(String[] args) {
Phone stu = new Phone();
stu.name = "pipi";
stu.color = "blue";
stu.call("acc");
stu.faDuanXin("pdd");
stu.printPhoneInfo();
Phone p = new Phone("iphone Sx max","红色");
p.printPhoneInfo();
}
}
继承
public class ExtendsDemo {
public static void main(String[] args) {
LOL l = new LOL("tencent", 111, "pdd");
l.printInfo();
l.name ="ad";
l.version =1;
l.agent= "tencent";
l.player="pdd";
l.start();
l.stop();
}
}
class Game{
String name;
int version;
String agent;
boolean isPc;
public Game(String name, int version,String agent){
this.name = name;
this.version = version;
this.agent = agent;
this.isPc = true;
}
public void start(){
System.out.println("游戏启动");
}
public void stop(){
System.out.println("游戏结束");
}
public void printInfo(){
System.out.println(name +","+version + agent);
}
}
class LOL extends Game{
String player;
public LOL (String name,int version,String agent){
super(name,version,agent);
this.player = player;
}
public void start(){
System.out.println("游戏启动后先进行更新……");
System.out.println("游戏玩家" + player );
}
}
class Honor extends Game{
public Honor(String name,int version,String agent,boolean isPc){
super(name,version,agent);
}
}
- 方法的签名:方法名称+参数列表
- @author Administrator
public class OverLoadDemmo {
//现金方式
public void payByCash(double money){
System.out.println("使用现金支付");
}
//银行卡
public void payByCard(String username,String password,double money){
System.out.println("使用银行卡支付");
}
//支票
public void payByCheck(double money){
System.out.println("使用支票支付");
}
public void pay(String username, String password){
System.out.println("使用信用卡支付");
}
//方法的重载,方法名称相同,参数列表不同
public void pay(double money,String name){
System.out.println("使用现金支付");
}
}
练习
- 学生类:姓名,性别,年龄,成绩
- 女的,190,打游戏,做饭 苍老师
- @author Administrator
*添加构造方法,并进行测试
*/
public class Student {
//成员变量--特征,属性
String name;
int age;
double score;
//方法行为
public void play() {
System.out.println("打游戏");
}
public void study(){
System.out.println("学习");
}
public void printStudentInfo(){
System.out.println("姓名:" + name + "年龄" + age +"成绩" + score);
}
//构造方法
public Student(String name, int age, double score){
this.name = name;
this.age = age;
this.score = score;
}
}
package cn.tedu.day05;
public class Test01 {
public static void main(String[] args) {
//构造方法输出
Student stu = new Student("qq", 110, 50);
stu.printStudentInfo();
//方法
stu.name = "pipi";
stu.age = 18;
stu.score = 88;
stu.printStudentInfo();
stu.study();
stu.play();
Student stu1 = new Student(null, 0, 0);
stu1.name = "baby";
stu1.age = 18;
stu1.score = 88;
stu1.printStudentInfo();
stu1.study();
stu1.play();
Student stu2 = new Student(null, 0, 0);
stu2.name = "aa";
stu2.age = 18;
stu2.score = 88;
stu2.printStudentInfo();
stu2.study();
stu2.play();
}
public static void printlnstudentInfo(Student stu){
System.out.println("姓名:" + stu.name + "年龄" + stu.age +"成绩" + stu.score);
}
}
/*String name = "pipi";
int age = 18;
int score = 76;
printStudentInfo(name, age, score);
String name1 = "oioi";
int age1 = 18;
int score1 = 76;
printStudentInfo(name1, age1, score1);
}
public static void printStudentInfo(String name, int age,int score){
System.out.println("姓名:" + name + "年龄" + age +"成绩" + score);
}*/
package cn.tedu.day05;
/**
- 成员变量和局部变量
- 1、在类中的位置不同
- 成员变量:类中,方法外
- 局部变量:方法中或者方法的声明上(形参)
- 2、在内存中
- 成员变量:堆内存中
- 局部变量:栈内存中
- 3、初始化
- 成员变量:有默认值
- 局部变量:没有默认值,必须先进性声明,后进行初始化
- 4、生命周期
- 成员变量:随着对象的创建存在,对象消失而消失
- 局部变量:随着方法的调用存在,方法调用完毕后消失
- @author Administrator
*
*/
public class VariableTest {
//x成员变量
static int x;
public static void main(String[] args) {
x = 66;
printInfo();
System.out.println(x + "===");//
}
public static void printInfo(){
x = 76;
int y = 5;
System.out.println(x + "-------");
System.out.println(x);
System.out.println(y);
}
}
画布:乌龟
package cn.tedu.day05;
import javax.swing.JFrame;
public class WuguiMain extends JFrame {
public WuguiMain (){
this.setSize(1400,800);
this.setTitle("123");
this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);
this.setLocationRelativeTo(null);
WuguiPanel tj = new WuguiPanel();//创建对象
this.add(tj);//装载到窗体
this.setVisible(true);
this.addMouseListener(tj);
tj.addMouseListener(tj);//监听
}
/主函数程序入口/
public static void main(String[] args) {
new WuguiMain ();
}
}
package cn.tedu.day05;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JPanel;
public class WuguiPanel extends JPanel implements Runnable,MouseListener{
int x = 300;
int y = 200;//乌龟的初始位置
int k1 = 300, t1 = 200;
int k2 = 300, t2 = 200;
int k3 = 300, t3 = 200;
int k4 = 300, t4 = 200;
//写一个数组
int[] a = new int[200];//x坐标
int[] b = new int[200];//y坐标
public WuguiPanel(){//构造方法
this.setBackground(Color.CYAN);
//产生水波纹
for(int i = 0; i < a.length; i++){
a[i] = (int) (Math.random()*1400);
b[i] = (int) (Math.random()*800);
}
//线程
Thread t = new Thread(this);
t.start();
}
public void paint(Graphics g){
super.paint(g);
g.setColor(Color.BLUE);
for(int i = 0; i < a.length; i++){
g.drawString("~", a[i], b[i]);
}
//设置颜色
g.setColor(Color.GREEN);
g.fillOval(x, y,70, 100);
//画眼
g.setColor(Color.BLACK);
g.fillOval(x + 10, y + 30, 10, 15);
g.fillOval(x + 50, y + 30, 10, 15);
//画嘴
g.setColor(Color.RED);
g.fillOval(x + 30, y, 8, 6);
g.setColor(Color.ORANGE);
//ctrl+alt+下健
g.fillOval(k1 - 75, t1 + 70, 60, 70);//左上脚
g.fillOval(k2 + 75, t2 + 70, 60, 70);//左下
g.fillOval(k3 - 75, t3 + 235, 60, 70);//左上
g.fillOval(k4 + 75, t4 + 235, 60, 70);//右下
//画壳
g.setColor(Color.GREEN);
g.fillOval(x - 66, y + 69, 200, 230);
//字
g.setColor(Color.RED);
Font font = new Font(Font.DIALOG,Font.BOLD,30);
g.setFont(font);
g.drawString("1111",x - 25,y + 175 );
}
public static void main(String[] args) {
}
@Override
public void run() {
while(true){
x++;
if(x >= 1440){
x = 0 ;
}
k1++;
if(k1 >= 1440){
k1 = 0 ;
}
k2++;
if(k2 >= 1440){
k2 = 0 ;
}
k3++;
if(k3 >= 1440){
k3 = 0 ;
}
k4++;
if(k4 >= 1440){
k4 = 0 ;
}
for (int i = 0; i < a.length; i++) {
a[i]--;
if (a[i] < 0) {
a[i] = 1400;
}
}
repaint();//重绘调用paint方法
//线程的睡眠
try {
Thread.sleep(10);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
// System.out.println(“启动了”);
x = e.getX();
y = e.getY();
k1 = e.getX();
t1 = e.getY();
k2 = e.getX();
t2 = e.getY();
k3 = e.getX();
t3 = e.getY();
k4 = e.getX();
t4 = e.getY();
repaint();
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
//
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
}