保姆级0基础学java之期末复习!

保姆级0基础学java之期末复习!

1.helloworld以及ideal的快捷键使用

package com.sxt;

import java.util.ArrayList;//导报

/**
 * Created with Intellij IDEA
 * Discripution:
 * User:ALL
 * Time:23:40
 */
public class hello {
    /*
       main方法 psvm
       System.out.println(""); 字面常量.sout
       ctrl+d 复制
       代码块的移动 ctrl+shift+上箭头/下箭头
       导包,生成变量 alt+enter
       单行注释/取消 ctrl+/
       多行注释/取消注释 ctrl+shift+/
       代码块包围 ctrl+alt+t
       构造方法,getter setter等等 alt+insert
     */
    public static void main(String[] args) {
        //1)String[] args数组的定义
        // 字符串类型 char*p="hello" 数组中存的都是字符串
        //数组是这样定义的
        //int arr[10] ->int[10] ->vs调试的时候arr int[10]
        for(int i=0;i<args.length;i++){
            System.out.println(args[i]);
        }
        //c:\Users\ALL\Desktop>java test ljj is huaidan
        //                    java命令    运行时的命令行参数
        //2)sout
        System.out.println("7");//换行
        System.out.print("7");//不换行
        //用得最多的是前两个
        System.out.printf("%d\n",21);//如c语言
    }
}
/*多行注释
* 多行注释
* 不推荐 */
/**文档注释
 * 常用于方法和类上描述方法和类的作用
 * 可以被javadoc工具解析
 * 生成一套以网页文件形式体现的程序说明文档*/

java->javac .class->java运行
注意该字节码文件是一个类对应字节码文件

2.数据类型和变量

2.1常量

常量即程序运行期间,固定不变的量
字面常量的分类
1.字符串常量,“”
2.整形常量 直接写整数
3.浮点数常量 直接写小数
4.字符常量, ‘’
5.布尔常量 true false
6.空常量 null

左值=右值

2.2 数据类型

  • 数据类型
    • 基本数据类型(简单)
      • 整数 byte short int long
      • 小数 float double
      • 布尔值 boolean
      • 字符char
    • 引用数据类型
      • 数组 字符串 类 接口 枚举 String
  • 变量
    • 局部变量 在使用前一定要初始化
    • 成员变量

%将ideal中的项目直接部属到github上
1


表达式:变量和运算符构成的

数据类型占的byte:
在Java里面没有所谓无符号有符号注意的说法
在这里插入图片描述


public class TestDemo{
   
  public static void main(String[] args){
   
    System.out.println(Integer.MAX_VALUE);
    System.out.println(Integer.MIN_VALUE);
    int a = 10;
    long a = 10L;//10是长整形的类型 不加L会报错,小写l不推荐
    System.out.println(Long.MAX_VALUE);//9223372036854775807
    System.out.println(Long.MIN_VALUE);//-9223372036854775808
    short a = 10;
    System.out.println(Short.MAX_VALUE);//32767
    System.out.println(Short.MIN_VALUE);//-32768
    byte b1 =18;
    byte b2 =180;//报错
    //当Java使用=赋值一个字面值常量,超过范围后会自动检查字面值常量,斌且识别为int类型
    System.out.println(Byte.MAX_VALUE);//127
    System.out.println(Byte.MIN_VALUE);//-128
    float f =12.5f;//如果不加f会默认12.5是一个double类型
    //遵循c中float的存储
    //包装类Float 不研究最大值最小值
    System.out.println(Float.MAX_VALUE);
    System.out.println(Float.MIN_VALUE);
    char ch = '搞';
    System.out.println(ch);
    //java里面用unicode表示字符
    //用记事本出现中文会有编码错误javac -encoding UTF-8 xxx.java
  }
}

Integer 叫包装类 包装类即基本数据类型所对应的类类型
int —>interger[int的plus版本]
long 8个字节->数值:63bit -2^63 ~ (2^63)-1
short 2个字节->数值:15bit -2^15 ~ (2^15)-1
byte 1个字节 ->数值—:7bit -2^7 ~ (2^7)-1
float 4个字节
double 8个字节 双精度
char 2个字节 ->对应地包装类Character
boolean 可能8bit ->Boolean

在这里插入图片描述

布尔变量boolean
JVM中没有指定布尔元素大小

但是说boolean数组在JVM地实现中,Java编程语言中地布尔数组被编码成JVM字节数组,每个布尔元素使用8位
没有谱所谓地非0为真 0为假

  int a = 1;if(a){
   ;}//报错
  if(a!=0){
   ;}//正确 

3.类型转换

显示隐

  pubic class TestDemo{
   
    public static void main(String[] args){
   
      int a = 10;
      long b = 20;
      int c = a + b;//编译错误 a + b==>int + long --> long + long 赋值给int会丢失数据
      int c = (int)(a+b);//强制类型转换
      long d = a + b;//编译成功 int+long --->long + long赋值给long
    }
  }

由于cpu是按照4个字节为单位从内存中读取数据,byte short这种低于四个字节地类型 会提升成int再计算

4.string

+是拼接地意思 只要和字符串拼接就直接是字符串 不会进行运算

public class TestDemo{
   
 public static void main(String[] args)
    {
   
        String st1 = "男神";
        String st2 = "爱我";
        System.out.println(st1+st2);
        int a = 10;
        int b = 20;
        System.out.println("a="+a+"b="+b);
        System.out.println("a+b=" +a+b);//都是字符串拼接
        System.out.println("a+b="+(a+b));
        System.out.println(a+b+"->a+b");//开始是整数后面字符串拼接
        /*a=10b=20
        a+b=1020
        a+b=30
        30->a+b*/
    }
}

4.1 int与string互相转换

public class TestDemo{
   
 public static void main(String[] args) {
   
        //int转string
        int num=1;
        String str1=num+"";//法1
        System.out.println(str1);//1
        String str2=String.valueOf(num);//法2
        System.out.println(str2);//1
        //String转int
         String str = "100";
        int sum=Integer.parseInt(str);
        System.out.println(sum);//100
    }
}

5.运算符

5.1. 基本四则运算符:加减乘除模(+ - * / %)

注意:
都是二元运算符,使用时必须要有左右两个操作数
int / int 结果还是int类型,而且会向下取整

int a = 10;
int b = 20;
a + b;
a < b;
int a = 20;
int b = 10;
System.out.println(a + b); // 30
System.out.println(a - b); // 10
System.out.println(a * b); // 200
System.out.println(a / b); // 2
System.out.println(a % b); // 0 --->模运算相当于数学中除法的余数

在这里插入图片描述

  • 做除法和取模时,右操作数不能为0
  • % 不仅可以对整形取模,也可以对double类型取模,但是没有意义,一般都是对整形取模的
System.out.println(11.5 % 2.0);
// 运行结果1.5
  • 两侧操作数类型不一致时,向类型大的提升
System.out.println(1+0.2); // +的左侧是int,右侧是double,在加之前int被提升为double
// 故:输出1.2

5.2移位操作符

  1. 左移 1 位, 相当于原数字 * 2. 左移 N 位, 相当于原数字 * 2 的N次方.<<
  2. 右移 1 位, 相当于原数字 / 2. 右移 N 位, 相当于原数字 / 2 的N次方.>>
  3. 由于计算机计算移位效率高于计算乘除, 当某个代码正好乘除 2 的N次方的时候可以用移位运算代替.
  4. 移动负数位或者移位位数过大都没有意义.

方法签名:经过编译器修改之后最终的方法名字
方法全路径名+参数列表+返回值类型
在这里插入图片描述

关于调用栈
方法调用的时候,会有一个栈这样的内存空间描述当前的调用关系,称为调用栈
每一次方法的调用就称为一个栈帧,每一个栈帧中包括了这次调用的参数是哪些,返回哪里等消息
可以借用idea看到

在这里插入图片描述

基本数据创建的变量叫做基本变量,其变量空间存储的是所对应的值,
引用数据创建的变量叫做对象的引用,存贮的是对象所在空间地址

  public static void func() {
   
int a = 10;
int b = 20;
int[] arr = new int[]{
   1,2,3};
}

在上述代码中,a、b、arr,都是函数内部的变量,因此其空间都在main方法对应的栈帧中分配。
a、b是内置类型的变量,因此其空间中保存的就是给该变量初始化的值。
array是数组类型的引用变量,其内部保存的内容可以简单理解成是数组在堆空间中的首地址。

array1=array2;

让array1去引用array2引用的空间,此时array1和array2完全是一个数组。

在方法中修改参数的值(基础数据),不影响实参的值。
修改引用数据类型的值,会影响实参的值

5.2.1总结:

所谓的 “引用” 本质上只是存了一个地址. Java 将数组设定成引用类型, 这样的话后续进行数组参数传参, 其实只
是将数组的地址传入到函数形参中. 这样可以避免对整个数组的拷贝(数组可能比较长, 那么拷贝开销就会很大).

有些知识点和c++没差 我就不写了哈 感觉好啰嗦 摆烂

6.构造方法

public class Date {
   
        public int year;
        public int month;
        public int day;
        //无参构造方法--内部给各个成员赋值初始值,该功能与三个参数的构造方法重复
        //此处可以在无参构造方法中通过this调用带有三个参数的构造方法
        //但是this(1900,1,1);必须是构造方法中第一条语句
        public Date(){
   
            this(1900,1,1);
            //this.year=1900;
            //this.month=1;
            //this.day=1;
        }
        public Date(int year,int month,int day){
   
            this.year=year;
            this.month=month;
            this.day=day;
        }
        public static void mian(String[] args){
   

        }
}

this(…)必须是构造方法中第一条语句
不能形成环

public Date(){
   
this(1900,1,1);
}
public Date(int year, int month, int day) {
   
this();
}
/*
无参构造器调用三个参数的构造器,而三个参数构造器有调用无参的构造器,形成构造器的递归调用
编译报错:Error:(19, 12) java: 递归构造器调用
*/
6.1默认初始化

有个疑惑:局部变量必须要初始化才能使用,为什么字段声明之后没有给值依然可以使用?

public class Date {
   
public int year;
public int month;
public int day;
public Date(int year, int month, int day) {
   
// 成员变量在定义时,并没有给初始值, 为什么就可以使用呢?
System.out.println(this.year);
System.out.println(this.month);
System.out.println(this.day);
}
public static void main(
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值