java基础语法+面向对象三大特征预习笔记

  • 1.java基础语法
  • (1)基本的数据类型 

类型存储需求
byte1字节
short2字节
char2字节
int4字节
long8字节
float

4字节

double8字节

其中long类型数据在初始化时要带’L'或‘l'后缀

float类型在初始化时要带’F'或‘f'后缀,其它类型不需要后缀或者可省略。

应为java中没有无符号数,所以整数类型数据的大小为:-2的n/2次方~2的n/2次方-1(n为该数据类型所占的位数)

而对于浮点型:float保留的是八位有效数字,double是十六位,所以要注意数据实际存储时可能发生截断问题导致精度损失。

当不同数据类型之间有混合运算时会有以下自动转换:byte、short、char → int → long → float → double;当byte,short,char之间运算时都变为int型,其它的同理都会默认向高级的转换,浮点型一般都默认double;

(2)输入与输出

输出常见的三种方式

System.out.println()输出后可以换行
System.out.print()输出后不换行
System.out.printf()与C语言中的printf用法大致相同

注意在输出变量之前必须要对变量赋值,不然会出现报错;

输入_方法一:Scanner,格式如下bu

import java.util.Scanner;

public class Demo {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        int a=scanner.nextInt();
        System.out.println(a);
    }
}

 不同的数据类型scanner的格式也不同

int a=scanner.nextInt()输入一个int型的值,Byte,Short,Long,Float,Double都是同理的
String a=scanner.next()输入字符串,但是在第一个空格处会截止
String a=scanner.nextline()输入字符串,但是不会因为空格停止

输入_方法二:System

package org.example;
import java.io.IOException;

public class Demo {
    public static void main(String[] args) throws IOException {
        int a=System.in.read();
        System.out.println((int)a);
    }
}

这种方法比较鸡肋,只能读取第一个字符并返回ASC码值;

(3)数组:(与C语言一样都是从0开始)

定义数组:数据类型[] 数组名;或者 数据类型 数组名[];

数组在使用前一定要声明好长度不然会报错,数组在声明长度后不可再更改长度;

声明方式:数据类型[] 数组名=new 数据类型[数组长度];例如:

int[] a=new int[10];

也可以在初始化的时候直接赋值,格式如下:数据类型[] 数组名=new 数据类型[]{要初始化的值};或者 数据类型[] 数组名={要初始化的值};//这样初始化后数组的大小与初始化值的个数相等;

在C语言中并不会检查数组是否越界(不会报错),但是Java会检查数组是否越界,如果越界就会报错;如果执行如下代码,则会发生的报错如图。

public class Demo {
    public static void main(String[] args){
        int[] a=new int[10];
        System.out.println(a[10]);
    }
}

数组中还有一个常用的length函数,用于测量数组的长度。

public class Demo {
    public static void main(String[] args){
        int[] a=new int[10];
        int len=a.length;
        System.out.println(len);
    }
}

最后结果会返回10,但是要注意length与length()是两个不同的东西:length返回的是一个数组的长度,而length.()返回的是字符串中有多少个char字符;

(4)分支结构:简单点来说Java中的分支结构与C语言中的大致相同,都是有if-else的分支结构与switch的分支结构,但是不同的是Java中对布尔类型数据的区分更加细致;

a.if-else结构:在C语言中如果执行如下代码则会输出“YES”(因为在C语言中0代表布尔中的false,其它数字都是true,而这段代码先对m赋值为1,编译器就会把它识别为true)

int m=0;
	if(m=1)
	cout<<"YES\n";

但是如果在Java中执行类似的代码则会发生报错

int m=0;
        if(m=1)
            System.out.println("YES");

所以在Java中使用if分支结构时一定要注意if内的表达式是不是布尔类型,而其它内容上Java中的if-else与C语言并没有太多的区别;

b. switch语句,相比于C语言Java又对switch语句进行了升级,C语言中switch(表达式)中的表达式会以int型数据进行存储,对应的case也是以int型进行判断。Java中的switch语句不仅支持对int类型的数据进行判断,还增加了String类型的判断(但是如果case的判断数据与switch的输入数据类型不同则有可能会发生报错)

public class Demo {
    public static void main(String[] args) {
        String a="nenu";
        switch(a){
            case "12":
                System.out.println("12");
                break;
            case "nenu":
                System.out.println("666");
                break;
            case "6":
                System.out.println("6");
                break;
        }
    }
}

最后的结果会输出666;但是如果把上述代码稍微改动一下下结果就完全不一样了;

public class Demo {
    public static void main(String[] args) {
        String a="nenu";
        switch(a){
            case "12":
                System.out.println("12");
                break;
            case "nenu":
                System.out.println("666");
                break;
            case '6':
                System.out.println("6");
                break;
        }
    }

把"6"改成了'6'就会发生报错

(5)循环结构:(注意判断语句是布尔类型的数据)

a. for(初始化语句;判断语句;控制语句);

Java中for循环多了一种表达方式:for(数据类型 i:数组名);这种表达方式有点类似Python的表达方法,能够遍历一个数组中的所有内容

b. while(判断语句)

c.do-while(判断),这两个结构与C语言中的用法几乎没有区别;

2.Java面向对象的三大特征:

(1)封装性:将数据和对数据的操作封装在一起,通过抽象,即从具体的实例中抽取出共同的性质形成的一般概念,例如类的概念;(封装能够对数据进行很好的保护,可以通过private来对数据进行封装,使得只能通过特定方法来对数据进行设定与读取)

(2)继承性:在一个父类(现有类)的基础上再构建一个子类(新类),子类可以拥有父类的属性以及行为,同时子类可以在此基础上增添一些新的属性的行为;

继承的作用就是能提高代码的复用性。子类拥有父类中的一切(拥有不一定能使用),它可以访问和使用父类中的非私有成员变量,以及重写父类中的非私有成员方法。

(3)多态性:有两种意义上的多态,一种是操作名称上的多态,即有多个操作有相同的名字,但这些操作所接受的数据类型必须不同;另一种多态是和继承有关的多态,是指同一个操作被不同类型的对象调用时可能产生不同的行为;(多态可以帮助我们简化程序,增强代码的重用与拓展)

  • 35
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值