zl程序教程

您现在的位置是:首页 >  移动开发

当前栏目

Android入门教程(五)

2023-09-11 14:16:54 时间

关注我,每天都有优质技术文章推送,工作,学习累了的时候放松一下自己。


欢迎大家关注我的微信公众号:「醉翁猫咪」


字面量:
1.整数字面量为整型(int)
2.小数字面量为双精度浮点型(double)
0.5*10结果为双精度浮点型
byte short int long float double  

public class TestSwitch{
public static void main(String args []){
char c = 'a';
switch(c){
case 'b':
System.out.println('b');
break;
case 'c':
System.out.println('c');
break;
case 'a':
System.out.println('a');
break;
default:
System.out.println('d');
}
    }
}
switch( char byte short int )只允许四种类型

public class Test01{
 public static void main(String args []){
 int score = 90;
 if(score > 85 && score <= 100){
 System.out.println("成绩为优");
 }
 else if(score > 75 $$ score <= 85){
 System.out.println("成绩为良");
 }
 else if(score > 60 $$ score <= 75){
 System.out.println("成绩为中");
 }
 else if(score <= 60 && score >= 0){
 System.out.println("成绩为差");
 }
 else if(score > 100 || score < 0){
 System.out.println("成绩不在正常的范围之内");
 }
 }
}

for(int i = 0; i < 10; i++){
 System.out.println(i);
}
 
public class TestWhile{
 public static void main(String args []){
  int i = 0;
  while(i < 10){
   System.out.println(i);
   i++;
   } 
  }
}
打印出100-200之间的所有素数
一个数字只有一和它自己被整除
定义一个类,名为TestPrimeNumber
在类当中定义主函数
用for循环打印出所有在100-200之间的数字
在for循环当中,每当循环执行一次,就判断循环变量是否为素数,如果是,就将循环变量的当前值打印出来;
判断n是否为素数,首先用2除n,如果除不尽,再用3除n,依次类推,如果从2到n-1都无法整除n,那么n就是素数。
   
class TestPfrimeNumber{
 public static void main(String args []){
  for(int i = 100; i < 201; i++){
   boolean b = false;

   for(int j = 2 ; j < i - 1; j++){

    int k = i % j;
     if(k == 0){
      b = true;
     }
    }
//如果不是true就打印出素数
    if(!b){
     System.out.println(i);
    }
   }
  }
}

打印图形
public class Test{
public static void main(String args[]){
int i = 5;
int j = i++ + 5;
System.out.println(j);
System.out.println(i);
}
}


j=10;
i=6;


int j = ++i + 5;
System.out.println(j);
j=11;
i=6;


& 逻辑与
&& 短路与

class TestTriangle{

public static void main(String args []){
 for(int i=1; i<5; i++){
  for(int j=0; j<4-i; j++){
   System.out.print(" ");
  } 
  for(int k=0; k<i; k++){
   System.out.print("* ");
  }
  System.out.println("");
  }
 }
}
什么是面向对象?
面向对象是一种编程方法
面向对象是一种思维方式
面向对象不是一种编程语言

应该如何学习面向对象?
掌握一门面向对象语言的语法
掌握面向对象的思维方式
熟悉面向对象设计原则
掌握面向对象设计模式 

什么是面向对象思维方法?
1.首先确定谁来做,其次确定怎么做
2.首先考虑整体,其次考虑局部
3.首先考虑抽象,其次考虑具体

不要认为掌握了一门面向对象语言就是掌握了面向对象

习惯了将面向对象与现实世界做比较

14
创建类的方法
创建对象的方法
对象和对象的引用
定义类的方法
class类名
{
属性;
方法;
}
属性也叫成员变量,主要用于描述类的状态
方法也叫成员方法,主要用于描述类的行为

age是类的属性,也叫类成员变量
shout是方法也叫类的成员函数
shout方法可以直接访问用一个类中的age变量,如果一个方法中有与成员变量同名的局部变量,该方法中对这个变量名的访问是局部变量,而不再是成员变量

生成对象的方法
格式:类名 对象名=new类名()
例如:Dog dog = new Dog();
创建一个Dog的引用
创建一个Dog的对象
类和对象的关系
类是抽象,而对象是具体的。

变量的类型 变量的值
Java的数据类型 基本数据类型和引用数据类型
对象就是引用数据类型
生成对象的方法
Java虚拟机把内存分为栈内存和堆内存

对象就叫引用数据类型
应该如何学习面向对象
面向对象的思维方式

class Test{
public static void main(String args []){
Dog d = new Dog();
d.name="旺财";
d.age=2;
d.color="黑色";
d.jump();
System.out.println("名字是"+d.name);
}}

对象的使用方法,多对象的创建方法,匿名对象的创建和使用方法。
对象的使用方法
使用对象调用变量和函数
对象.变量
对象.函数()
生成多个对象
匿名对象的使用
可以不定义对象的引用名称,而直接调用这个对象的方法,这样的对象叫做匿名对象。
如:new Dog().jump();

函数的重载和构造函数的作用
重载的表达
class A{
 void funA(){
  System.out.println("没有参数的funA函数");
 }
 void funA(int i){
  System.out.println("拥有一个整型参数的funA函数");
 }
 void funA(int i,double d){
  System.out.println("拥有两个参数的funA函数");
}
class Test{
 public static void main(String args[]){
  A a = new A();
  a.funA();
  a.funA(1,3.2);
  }
}

什么叫函数的重载呢?
1.两个或者多个函数在同一个类当中;
2.函数名相同;
3.参数列表不同

什么是构造函数?
A(){
}
使用this调用成员变量和成员函数
使用this调用构造函数

1.静态成员变量只有一份
2.在静态函数当中不能使用this;
3.静态代码块的主要作用是为静态成员变量赋值。
class Person{
 static{
  System.out.println("dd");
 }
 static String name;
 ..
}


继承,封装,多态
什么是继承?
为什么要使用继承,
继承特点


什么是继承?
在现实世界当中,继承就是儿子得到了老子的东西;
在面向对象的世界当中,继承就是一个类得到了另一个类当中的成员变量和成员方法;
Java当中只支持单继承
Java只支持单继承,不允许多继承。

总结:
使用继承是为了减少重复代码
继承的基本语法

子类实例过程
生成子类的过程
使用super调用父类构造函数的方法

class Person{
 String name;
 int age;
 Person(){
  System.out.println("Person的无参数构造函数");
 }
 Person(String name,int age){
  this.name = name;
  this.age = age;
  System.out.println("Person有参数构造函数");
 }
 void eat(){
  System.out.println("吃饭");
 }
}

class Student extends Person{
//在子类的构造函数当中,必须调用父类的构造函数
 Student(){
  super();
  System.out.println("Student的无参数构造函数");
 }
 Student(String name,int age,int a){
  super(name,age);
  this.a = a;
}

继承只能继承成员变量成员函数
class Test{
 public static void main(String args[]){
  Student student = new student();
 }
}

虽然子类不能继承父类的构造函数,但我能用super()来调用父类的构造函数。
调用子类的构造函数,一定会调用父类的构造的函数。
听懂了实例过程


函数的复写(override)
使用super调用父类的成员函数 
//复写(override)也被称之为覆盖或者重写
//在具有父子关系的两个类当中
//父类和子类各有一个函数,这两个函数的定义(返回值类型,函数名和参数列表)完全相同

class Student extends Person{
 String address;
 void introduce(){
  super.introduce();
  System.out.println("我的家在"+address);
 }
}

对象的转型(多态性的体现)
对象的向上转型和向下转型
什么是向上转型?
向上转型就是将子类的对象赋值给父类的引用。


Student s = new Student();
Person p = s;

//一个引用能够调用哪些成员(变量和函数),取决于这个引用类型
//一个引用调用的是哪一个方法,取决于这个引用所指向的对象。
class Test{
 public static void main(String args[]){
  String s = new Student();
  Person p = s;
 
  p.name = "hhh";
  p.age = 20;
  //p.address = "beijing";
  p.introduce();
  //p.study();
  }
}


什么是向下转型?
向下转型就是将父类的对象赋值给子类的引用


Student s1 = new Student();
Person p = s1;
Student s2 = (Student)p;


23
抽象函数的语法特征
抽象类的语法特征
抽象类的作用

类是抽象的,对象是具体的
比类更抽象的,就是抽象类
先抽象,后具体


什么是抽象函数?
只有函数的定义,没有函数体的函数被称为抽象函数
abstract void fun();
class Person{
 String name;
 int age;
 
 void introduce(){
  System.out.println("我的名字是"+name+",我的年龄是"+age);
  }
  abstract void eat();
}

什么是抽象类?
使用abstract定义的类被称之为抽象类
抽象类不能够生成对象;
如果一个类当中包含有抽象函数,那么这个类必须被声明为抽象类
如果一个类当中没有抽象函数,那么这个类也可以被声明为抽象类

抽象类 不能实例化
继承抽象类,那么该类必须为抽象类
复写,可以使用复写,就可以使用抽象类


class Chinese extends Person{
 void eat(){
  System.out.println("hhh");
 }
}


class Test{
 public static void mian(String args[]){
  Person p = new Chinese();
  p.eat();
  }
}


抽象类为基类,其他的类来继承它,就是当爹的

抽象类可以有构造函数吗?
条件:
抽象类不能生成对象
构造函数用于生成类的对象
super的作用

abstract class Person{
 Person(){
  System.out.println("Person的构造函数");
 }


 Person(String name,String age){
  this.name = name;
  this.age = age;
} 


 String name;
 int age;
 void introduce(){
  System.out.println("我的名字是"+name+",我的年龄是"+age);
 }
 abstract void eat();
}

class Chinese extends Person{

 String address;
 Chinese(){
  super();
  System.out.println("Chinese的构造函数");
 }

 Chinese(String name,int age,String address){
  super(name,age);
  this.address = address;
}
 void eat(){
  System.out.println("用筷子吃饭");
 }
}

class Test{
 public static void main(String args[]){
  Person p = new Chinese();
  P.eat();
  }
}

不能调用抽象类的构造函数,但可以用子类来调用抽象函数,生成子类对象的时候使用调用构造函数。

结论:
抽象函数就是没有函数体的函数
抽象类使用abstract来定义
抽象类不能生成对象,但是却可以拥有构造函数,这个构造函数是为了子类准备的。

24为什么用抽象类。
如果一段代码在语意上是有错误的,那么在语法上也应该是有错误的
abstract class Printer{
 void open(){
  System.out.println("open");
 }
 void close(){
  System.out.println("close");
 }
 abstract void print();
}
25什么是Java当中的软件包?
为什么要用软件包?
如何给一个类打包?


//将类放置到一个包当中,需要使用package“包名”
//编译时需要使用-d参数,该参数的作用是依照包名生成相应的文件夹
//一个类的全名应该是“包名”+"."+"类名"
//hhh.Test,执行的话,要使用java hhh.Test
//包名的命名规范
//要求包名所有的字母都要小写
//包名一般情况下,是你的域名倒过来写
package hhh;
class Test{
 public static void main(String args[]){
  System.out.println("hellos");
 }
}

软件包为Java类提供了命名空间
打包需要使用package指令
一个类的全名应该是“包名”+“类名”

包和访问权限的语法
Java当中的访问权限
public : 公共权限
private : 私有权限
default:包级别访问权限
protected:受保护权限


27包和访问权限
访问权限与继承的关系
protected权限


//如果子类和父类不在同一包当中,则子类无法继承到父类当中的default权限的成员变量和成员函数(有问题)
//如果子类和父类不在同一包当中,子类可以继承到父类当中的default权限的成员变量和成员函数,但是由于权限不够,无法使用
protected 权限首先拥有和default一样的功能,但是该权限只能修饰成员变量和成员函数 
//public > protected > default > private 

package com.hh;
public class Person{
 String name;
 int age;
 void eat(){
  System.out.println("eat");
 }
 void sleep(){
  System.out.println("sleep");
 }
}
package cn.mm;
import com.hh;
class Student extends Person{
 void introduce(){
  System.out.println("我的名字是"+name+",haha"+age);
 }
}

从入门到熟悉!

坚决不放弃!


喜欢本文的朋友们

欢迎长按下图关注订阅号醉翁猫咪

收看更多精彩内容