Java复习

基本语法查漏补缺

位运算

<< 左移. (-3<<4 = -32^4=-316=-48 原码->反码->补码 移动 补码->反码->原码(符号为不变)

int num1 = 7 //0000 0111
System.out.println("num1 << 2:"+(num1<<2)); // 7*2^2=7*4   
//0001 1100=16+8+4=28
System.out.println("num1 << 3:"+(num1<<3)); // 7*2^3=7*8=56

>>右移 (负数补1)

int num1 = 69 //0100 0101
System.out.println("num1 >> 2:"+(num1<<2)); // 0001 0001    16+1=17
System.out.println("num1 >> 4:"+(num1<<4)); // 0000 0100     4

>>>无符号右移(负数依旧补0)

& |:

&& 与&的异同:都是且,单个&两边条件都会执行,&&只要前面是false后面条件不执行
^

~ 按位取反
~9: 0000 1001 》1111 0110 (补码,符号位为1)=〉 反码0000 1001 ===》原码 0000 1010=-10

交换变量:

int a =20;
int b =10;

int tmp = a;
a=b;
b=tmp;

⇒ a=20,b=10

条件运算符:
int tempMax = (i>j)? i:j;

数据类型

String属于引用类型,不是基本数据类型,8种数据类型(整型(byte,int, short long),浮点(float,double),字符(char),布尔)

计算金额时,使用BigDecimal,精度高
char可以储存中文汉字,unicode
boolean占几个字节? 编译不谈字节,在JVM分配内存空间时,boolean占4个字节(1个slot)
double、long占2个slot

输入-Scanner

import java.util.Scanner;

class ScannerTest{
   public static void main(String[] args){
        Scanner scan = new Scanner(System.in);
        System.out.println("Inout your name:");
        String name = scan.next();//nextline(空格后也可以输出)
        System.out.println("your name is ="+name);
        scan.close();
   }
}

name.equals("李梅梅")

Radom是lang中,返回0~1之间的随机数

[a,b]范围内的随机整数
(int)(Math.random()*(b-a+1))+a

Switch-Case

int num1=1;
        switch (num1){
            case 0:
                System.out.println("Zero");
                break;
            case 1:
                System.out.println("One");
                break;
            case 2:
                System.out.println("Two");
                break;
            case 3:
                System.out.println("Three");
                break;
            default:
                System.out.println("Other");
                break;
        }

循环

1.初始化条件
2.循环条件
3.循环体
4.迭代部分

for (1;2;4){3}

for(int i =0;i<=100;i++){ num = +i;}
//输入两个正整数,求最大公约数和最小公倍数
class ForTest2{
    public static void main(String[] args) {
        Scanner num = new Scanner(System.in);
        System.out.println("Num1:");
        int input1 = num.nextInt();
        System.out.println("Num2:");
        int input2 = num.nextInt();
        //获取较小值
        int tmp;
        if (input1>=input2){
            tmp = input1;
            input1 = input2;
            input2 = tmp;
        }
        //最大公约数
        for (int i=input1;i>=1;i--){
            if(input1%i==0 && input2%i==0){
                System.out.println("最大约数是:"+i);
                break;
            }
        }
        //最小公倍数
        for (int j=input2;j<=input1*input2;j++){
            if (j%input1==0 && j%input2==0){
                System.out.println("最小公倍数:"+j);
                break;}
        }
    }
}

1
while(2){3;4}

质数

class IsPrime{
 public static void main(String[] args) {
        long start = System.currentTimeMillis();
        //100以内所有素数,100000以内?
        int count =0;
        for (int i=2;i<=100000;i++){

            int flag =0;
            for (int j=2;j<Math.sqrt(i);j++){
                if (i%j==0){
                    flag++;
                }
            }
            if (flag==0){
                //System.out.println(i);
                count++;}
        }
        long end = System.currentTimeMillis();
        System.out.println("Total time is"+ (end-start));
        System.out.println("The numeber of Prime is "+count);
    }
}

数组初始化与内存

整型默认初始化:0;浮点型:0.0;字符型(char):0;boolean:False;String(引用数据类型):null

String str = new String[4];
int score = new int[5];

Java将内存分为五个部分:程序计数器、虚拟机栈、本地方法栈、、方法区
栈:先进后出
队列:先进先出

遇到New意味着重新开辟一个空间

二维数组
int[ ][ ] arr2 = new int[5][5];
int[ ][ ] arr2 = new int[5][ ];
直接system.out.println(arr2[0]) 获得的是这个数组的地址

数组颠倒

class ReverseArray{
    public static void main(String[] args){
        int[] arr =new int[]{34,54,3,2,65,7,34,5,76,34,67};
        for (int i=0;i < arr.length/2;i++){
            int temp = arr[i];
            arr[i] = arr[arr.length-i-1];
            arr[arr.length-1-i]=temp;
        }
        for (int i=0;i< arr.length;i++){
            System.out.print(arr[i]+"\t");
        }
    }
}

数组扩容

class ArryExer01_1{
    public static void main(String[] args) {
        int[] arr= new int[]{1,2,3,4,5};

        int[] newArr = new int[arr.length<<1];//扩容一倍
        for (int i=0;i<arr.length;i++){
            newArr[i]=arr[i];
        }
        newArr[arr.length]=10;
        newArr[arr.length+1]=20;
        newArr[arr.length+2]=30;

        arr = newArr;
        for (int i=0;i<arr.length;i++){
            System.out.print(arr[i]+"\t");
        }
    }
}

class deletelement{
    public static void main(String[] args) {
        int[] arr = new int[]{1,2,3,4,5,6,7}; // 7
        int [] newArr = new int[arr.length-1];
        int deleteindex = 4;
        for (int i=0;i<deleteindex;i++){
            newArr[i]=arr[i]; //1,2,3,4
        }

        for (int i =deleteindex;i<arr.length-1;i++){
            newArr[i] = arr[i+1];
        }

        for (int i=0;i<newArr.length;i++){
            System.out.print(newArr[i]+"\t");
        }

//        for (int i = deleteindex;i<arr.length-1;i++){
//            arr[i] = arr[i+1];
//        }
//        arr[arr.length-1] =0;
//
//        for (int i=0;i<arr.length;i++){
//            System.out.print(arr[i]+"\t");
//        }
    }
}

Java 方法

  1. 权限修饰符[其他修饰符] 返回值类型 方法名(形参列表) [throws 异常类型] {}
  2. 权限修饰符
  • private,缺省,protected,public
  1. 返回值类型
  • void无返回,比如println,Arrays中的sort()
  • 有返回,指明返回数据的类型,可以是基本数据类型,也可以是引用数据类型。return + 返回值类型的变量或常量
  1. 形参列表: 形参,属于局部变量,且可以声明多个
  2. 如果有返回值,需要输出,则需要在main中使用print打印出来,而没有返回值则直接调用方法

多态

public class PersonTest1 {
    public static void main(String[] args) {
        Person p1 = new Man();

        //向下转型,可能出现类型转换异常
        Man m1 = (Man) p1;
        m1.earnMoney();
        System.out.println(m1.isSmoking);

        System.out.println(p1 == m1);
        /**
         * 类型转换异常
         *
         * Person p2 = new Woman();
         * Man m2 = (Man) p2;
         * m2.earnMoney();
         */

        /**
         * 在向下转型之前,使用instanceof进行判断,避免出现转换类型异常
         * a instanceof A:判断对象a是否是类A的实例
         */
        Person p2 = new Woman();
        if(p2 instanceof Man){
            Man m2 = (Man) p2;
            m2.earnMoney();
        }else
            System.out.println("Not the same class! You can't transfer it");
    }
}

Object类的使用

  1. 明确:java.lang.Object
  2. 任意一个非Object的类都直接或间接继承于Object
  3. Object类称为Java类的根父类
  4. Object类中声明的结构(属性、方法)具有通用性

Object类中没有声明属性
Object类中提供了一个空餐的构造器
主要关注Object中的方法

5.常用方法

  • 重点方法:equals() \ toString()
  • 仅需要了解:clone() \ finalize()
  • 剩余:wait(), getClass(), hashCode(), notify(), notifyAll()

MVC设计模式:降低业务耦合度

包的作用:
划分项目层次,帮助管理大型软件系统,解决命名冲突、控制访问权限

  1. Model 层:主要承载数据、处理数据

数据对象封装:model.bean/domain
数据库操作类:model.dao
数据库: model.db

2.Viewer层:显示数据,为用户提供使用界面,与用户进行交互

相关工具类 view.utils
自定义view view.ui

3.Contronller层:解析用户请求,处理业务逻辑,给予用户响应

应用界面相关 controller.avtivity
存放fragment controller.fragment
显示列表的适配器 controller.adapter
服务相关的 controller.service
抽取的基类 controller.base

封装性

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值