字面量:
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.首先考虑抽象,其次考虑具体
不要认为掌握了一门面向对象语言就是掌握了面向对象
习惯了将面向对象与现实世界做比较
创建类的方法
创建对象的方法
对象和对象的引用
定义类的方法
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只支持单继承,不允许多继承。
总结:
使用继承是为了减少重复代码
继承的基本语法
子类实例过程
生成子类的过程
使用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)也被称之为覆盖或者重写
//在具有父子关系的两个类当中
//父类和子类各有一个函数,这两个函数的定义(返回值类型,函数名和参数列表)完全相同
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来定义
抽象类不能生成对象,但是却可以拥有构造函数,这个构造函数是为了子类准备的。
如果一段代码在语意上是有错误的,那么在语法上也应该是有错误的
abstract class Printer{
void open(){
System.out.println("open");
}
void close(){
System.out.println("close");
}
abstract void print();
}
为什么要用软件包?
如何给一个类打包?
//将类放置到一个包当中,需要使用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:受保护权限
访问权限与继承的关系
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);
}
}
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有