2020-08-28 Java基础总结

java基础总结
1.java为什么是跨平台语言
因为它有虚拟机(JVM),JAVA程序不是直接在电脑上运行的,是在虚拟机上进行的,每个系统平台都是有自己的虚拟机(JVM),所以JAVA语言能跨平台。
2.java的基本类型是什么,默认值是什么
在这里插入图片描述1字节=8位

3.java的循环语句
有三种循环语句for,while,do while;

4.java的分支语句
if, if -else if else,if else,switch case;
switch 语句中的变量类型可以是: byte、short、int 或者 char。从 Java SE 7 开始,switch 支持字符串 String 类型了,同时 case 标签必须为字符串常量或字面量。

5.数组的声明方式,特点是什么,常用的方法
声明:dataType[] arrayRefVar; // 首选的方法

dataType arrayRefVar[]; // 效果相同,但不是首选方法
循环的方法:
for -each循环

double[] myList = {1.9, 2.9, 3.4, 3.5};
   
      // 打印所有数组元素
      for (double element: myList) {
         System.out.println(element);
      }

普通的循环

 double[] myList = {1.9, 2.9, 3.4, 3.5};
 
      // 打印所有数组元素
      for (int i = 0; i < myList.length; i++) {
         System.out.println(myList[i] + " ");
      }

常用的方法:
java.util.Arrays类能方便地操作数组,它提供的所有方法都是静态的。具有以下功能:
给数组赋值:通过fill方法。
对数组排序:通过sort方法,按升序。
比较数组:通过equals方法比较数组中元素值是否相等。
查找数组元素:通过binarySearch方法能对排序好的数组进行二分查找法操作。

6.核心工具类 String StringBuffer StringBuilder Math Date Calendar的常用方法
length() 方法,length 属性和 size() 方法的区别:
1、length() 方法是针对字符串来说的,要求一个字符串的长度就要用到它的length()方法;
2、length 属性是针对 Java 中的数组来说的,要求数组的长度可以用其 length 属性;
3、Java 中的 size() 方法是针对泛型集合说的, 如果想看这个泛型有多少个元素, 就调用此方法来查看!
常见的面试题

 String s1 = "abc";            // 常量池
String s2 = new String("abc");     // 堆内存中
System.out.println(s1==s2);        // false两个对象的地址值不一样。
System.out.println(s1.equals(s2)); // true

Java:String、StringBuffer 和 StringBuilder 的区别

String:字符串常量,字符串长度不可变。Java中String 是immutable(不可变)的。用于存放字符的数组被声明为final的,因此只能赋值一次,不可再更改。

StringBuffer:字符串变量(Synchronized,即线程安全)。如果要频繁对字符串内容进行修改,出于效率考虑最好使用 StringBuffer,如果想转成 String 类型,可以调用 StringBuffer 的 toString() 方法。Java.lang.StringBuffer 线程安全的可变字符序列。在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容。可将字符串缓冲区安全地用于多个线程。

StringBuilder:字符串变量(非线程安全)。在内部 StringBuilder 对象被当作是一个包含字符序列的变长数组。

基本原则:

如果要操作少量的数据用 String ;
单线程操作大量数据用StringBuilder ;
多线程操作大量数据,用StringBuffer
string
char charAt(int index)
返回指定索引处的 char 值。
math
math.random() 方法用于返回一个随机数,随机数范围为 0.0 =< Math.random < 1.0。
Math.floor 是向下取整。
Math .ceil 是向上取整。
Math.round 是四舍五入取整
date
获取当前时间`

SimpleDateFormat sdf = new SimpleDateFormat();// 格式化时间 
        sdf.applyPattern("yyyy-MM-dd HH:mm:ss a");// a为am/pm的标记  
        Date date = new Date();// 获取当前时间 
        System.out.println("现在时间:" + sdf.format(date)); // 输出已经格式化的现在时间(24小时制) 

calendar

Calendar c1 = Calendar.getInstance();
// 获得年份
int year = c1.get(Calendar.YEAR);
// 获得月份
int month = c1.get(Calendar.MONTH) + 1;
// 获得日期
int date = c1.get(Calendar.DATE);
// 获得小时
int hour = c1.get(Calendar.HOUR_OF_DAY);
// 获得分钟
int minute = c1.get(Calendar.MINUTE);
// 获得秒
int second = c1.get(Calendar.SECOND);
// 获得星期几(注意(这个与Date类是不同的):1代表星期日、2代表星期1、3代表星期二,以此类推)
int day = c1.get(Calendar.DAY_OF_WEEK)

7.java的三大核心 封装,继承,多态
封装:(英语:Encapsulation)是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法
继承:
从已有的类派生出新的类,称为继承。使用extend关键字
java 中若要在子类调用父类的方法,需使用关键字super。
多态
重载:
是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。
重写:是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变;

方法的重写(Overriding)和重载(Overloading)是java多态性的不同表现,重写是父类与子类之间多态性的一种表现,重载可以理解成多态的具体表现形式。

(1)方法重载是一个类中定义了多个方法名相同,而他们的参数的数量不同或数量相同而类型和次序不同,则称为方法的重载(Overloading)。
(2)方法重写是在子类存在方法与父类的方法的名字相同,而且参数的个数与类型一样,返回值也一样的方法,就称为重写(Overriding)。
(3)方法重载是一个类的多态性表现,而方法重写是子类与父类的一种多态性表现。

8.访问控制符
在这里插入图片描述
9.基本语法
对象:对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。
类:类是一个模板,它描述一类对象的行为和状态。
方法:方法就是行为,一个类可以有很多方法。逻辑运算、数据修改以及所有动作都是在方法中完成的。
实例变量:每个对象都有独特的实例变量,对象的状态由这些实例变量的值决定。

10,什么是对象和类
对象:对象是类的一个实例(对象不是找个女朋友),有状态和行为。
类是一个模板,它描述一类对象的行为和状态。

11.Java的作用域和范围
在这里插入图片描述
12.java常用运算符 逻辑短路
算数运算符:+,-,*,/,%,++,–
关系运算符:>,<,>=,<=,==,!=
位运算符:&,|,~(按位取反),^
逻辑运算符:&&,||,!
逻辑短路:使用与逻辑运算符时,在两个操作数都为true时,结果才为true,但是当得到第一个操作为false时,其结果就必定是false,这时候就不会再判断第二个操作了。

13.什么是接口,接口的特点是什么
接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。
特点
1.接口可以多继承
2.接口的方法声明必须是 public abstract 即便不写默认也是
3.接口里面不能包含方法具体实现
4.类实继承接口必须实现接口里申明的全部方法,除非该类是抽象类
5.类里面可以声明 public static final 修饰的变量
6.接口不能被实例化,但是可以被实现类创建

14.什么是抽象类
在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。

  1. 抽象类不能被实例化(初学者很容易犯的错),如果被实例化,就会报错,编译无法通过。只有抽象类的非抽象子类可以创建对象。
  2. 抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类。
  3. 抽象类中的抽象方法只是声明,不包含方法体,就是不给出方法的具体实现也就是方法的具体功能。
  4. 构造方法,类方法(用 static 修饰的方法)不能声明为抽象方法。
  5. 抽象类的子类必须给出抽象类中的抽象方法的具体实现,除非该子类也是抽象类。

15.如何定义一个一个属性、方法函数、构造函数?了解基本语法
属性:
数据修饰符 数据类型 名字;
public int a;
方法:
修饰符 返回值类型 方法名(参数类型 参数名){

方法体

return 返回值;
}

16.Java的命名规范
1)、名称只能由字母、数字、下划线、$符号组成
2)、不能以数字开头
3)、名称不能使用JAVA中的关键字。

17.java关键字的用法
break:用于结束本层循环,或跳出某层循环。
continue:用于跳出本次循环

18,重写和重载
重载:
是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。
重写:是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变;

方法的重写(Overriding)和重载(Overloading)是java多态性的不同表现,重写是父类与子类之间多态性的一种表现,重载可以理解成多态的具体表现形式。

(1)方法重载是一个类中定义了多个方法名相同,而他们的参数的数量不同或数量相同而类型和次序不同,则称为方法的重载(Overloading)。
(2)方法重写是在子类存在方法与父类的方法的名字相同,而且参数的个数与类型一样,返回值也一样的方法,就称为重写(Overriding)。
(3)方法重载是一个类的多态性表现,而方法重写是子类与父类的一种多态性表现。

19.异常的处理
检查性异常:最具代表的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的
运行时异常:运行时异常是可能被程序员避免的异常。
异常类有两个主要的子类:IOException 类和 RuntimeException 类。
如果一个方法没有捕获到一个检查性异常,那么该方法必须使用 throws 关键字来声明。throws 关键字放在方法签名的尾部。也可以使用 throw 关键字抛出一个异常,无论它是新实例化的还是刚捕获到的。
使用 try 和 catch 关键字可以捕获异常。try/catch 代码块放在异常可能发生的地方。

20.编程题
1.)for循环打印指定图形
等腰三角形

for (int i = 0; i <5 ; i++) {
            for (int j = 0; j <5 ; j++) {
                if(j<=i && (i+j-5)<0){
                    System.out.print("*");
                }
            }
            System.out.println();

2.)时间工具类的使用

//获取当前时间
 Date date=new Date();
        SimpleDateFormat sc=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        System.out.println("当前时间为:"+sc.format(date));
  // 获取当前的日期时间
        LocalDateTime currentTime = LocalDateTime.now();
        System.out.println("当前时间: " + currentTime);

3.)判断奇数偶数

  Scanner sc=new Scanner(System.in);
        System.out.println("输入一个数字");

        while (sc.hasNext()) {
            int i = sc.nextInt();
            if (i % 2 == 0) {
                System.out.println("这个是偶数");

            } else {
                System.out.println("这个是奇数");
            }

4.)成绩分级

 System.out.println("输入你的成绩");
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            int i = sc.nextInt();
            if (i > 90) {
                System.out.println("优秀");
            }
            else if( i>60 &&i<=90){
                System.out.println("还行");
            }else {
                System.out.println("加油");
            }
        }

5.)水仙花数

Scanner in =new Scanner(System.in);
        int x=0;
        for(x=100;x<=999;x++){
//            if(x==(x/100)*(x/100)*(x/100)+((x%100)/10)*((x%100)/10)*((x%100)/10)+((x%100)%10)*((x%100)%10)*((x%100)%10)){
//                System.out.println(x);
//
//            }
            if(x==(x/100)*(x/100)*(x/100)+((x/10)%10)*((x/10)%10)*((x/10)%10) + (x%10)*(x%10)*(x%10)){
                System.out.println(x);
            }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值