数据类型

1.计算机基础

  bit,即0或1

  byte字节,8位作为⼀个字节,字节是处理数据的基本单位

  1 byte = 8bits

  1KB = 1024 bytes

2.八种基本数据类型

  byte: 8位,最⼤127,最⼩-128,节省空间,占⽤int类型的四分之⼀,默认 0
  short: 16位,最⼩-32768,最⼤32767,int类型的⼆分之⼀,默认是0
  int: 32位,最⼩-2147483648,最⼤ 2147483647,整数默认是int类型,默认是0
  long: 64位,最⼩-9223372036854774808,最⼤9223372036854774807,默认是0L,
  float: 浮点, 单精度32位, 默认0.0f
  double: 双精度64位, 浮点数默认位double类型,默认是0.0
  boolean: 1位,true或者false,默认是false
  char: 16位的 unicode字符,即两个字节表示⼀个字符 最⼩是 u0000 即0,做⼤ ufff 即65535 例⼦ char demo = 'A'
  类型转换 double > float > long > int > short > byte
    小转大可以直接转换,从大到小,需要强制转换,会有精度丢失。
  引用数据类型:Class创建的对象 或者 数组都是引⽤数据类型
    String :字符串对象,也是引⽤⼀种数据结构,⽤来存储同⼀类型之的集合数据类型
3.数组
  数组:⼀种数据结构,⽤来存储同⼀类型之的集合,通过⼀个整形下标可以访问数组中的每⼀个值, 从0开始计算,记住,特别重要。内存中存储相同数据类型的连续的空间
使用数组:
  声明数组变量时,需要指出数据类型和数组变量的名字
//声明数组,但没有初始化
int [] numbers;

//使⽤new运算符创建数组
int [] numbers2 = new int[100];

new int[n]将会创建⼀个⻓度为n的数组

//可以使⽤这两种形式声明数组,推荐第⼀种
int [] numbers;
int numbers2 [];

数组初始化和匿名数组

//初始化,数组的⼤⼩就是初始值的个数
int[] numbers = { 1,2,3,4,5,6 };
//匿名数组
new int[] { 1,2,3,4,5,6 };

注意:所有元素都初始化为0,boolean数组的元素会初始化为false。⼀旦创建了数组,就不能改变它的⼤⼩,数组需要初始化才可以操作,不能索引越界。

一维数组

int [] numbers = {1,2,3};
String[] str=new String[2];
String[] str= {"apple", "xdclass", "cat", "dog"};

多维数组

//创建并初始化
int [][] numbers = {[1,2,3],[4,5,6],[7,8,9]}
//创建
int [][] numbers2 = new int[3][3];

数组⾥⾯有很多⽅法,是⾃带的⽅法和属性

  获取数组⻓度的属性名称 length,使⽤就是 数组名.length

5.java内存空间堆栈

  数据类型

    基本数据类型: byte,short, int,long, float,doble,boolean,char

    引⽤数据类型:即除了基本的变量类型之外的所有类型

  java在内存中堆(Heap)、栈(Stack)两块存储空间

  数据类型在内存中使用

    基本的变量类型只有⼀块存储空间(分配在stack中),

      传递的时候直接是值传递,

      对数据进⾏操作,不影响原先的值

    引⽤类型有两块存储空间(⼀块在stack中,⼀块在heap中)

      ⼀个对象在内存中会请求⼀块空间来保存数据,访问对象的时候不会直接是访问对象在 内存中的数据,⽽是通过引⽤去访问。

    引用:也是⼀种数据类型,保存的是内存的地址,引⽤是存储在 stack栈空间⾥⾯

    不同的引用可以指向同一个对象,一个对象可以有多个引用

//
int a=1;
boolean flag=false;
// s在栈中   new Student();在堆中
Student s = new Student();
Person p = new Person();

引用后修正结果

  因为字符串、数组或者对象是引⽤类型,所以修改后正在的数据都会发⽣变化

String a = "学习java";
 String b = "l love java";
 System.out.println(a);
 System.out.println(b);
 b = a ;
 System.out.println(a);
 System.out.println(b);
 a = "现在在学java基础";
 System.out.println(a);
 System.out.println(b);

数据拷贝

int [] a = {1,2,3};
 int [] b = a;
 System.out.println(Arrays.toString(a));
 System.out.println(Arrays.toString(b));
 b[0] = 0;
 System.out.println(Arrays.toString(a));
 System.out.println(Arrays.toString(b));

数组是引⽤类型,所有的引⽤都是指向这个值的, 也就是这个对象

变量类型

  类变量(静态变量):

   使⽤static声明的变量,可以直接使⽤ 类名.变量名访问
   ⼀个类不管创建了多少个对象,类只拥有类变量的⼀份拷⻉,数值默认值是0,布尔型默认值 是false,引⽤类型默认值是null
    
   ⽣命周期:在第⼀次被访问时创建,在程序结束时销毁

   声明为public类型,⼀般这样声明 public static final

   存储在⽅法区,和堆栈不⼀样的⼀个空间
public class Student{
 public static final String PREFIX = "我是叫";
}

实例变量(属性)

  需要使⽤对象.变量名才可以访问

  对象被实例化之后,实例变量的值就跟着确定,可以是赋值,也可以是默认值

  ⽣命周期:在对象创建的时候创建,在对象被销毁的时候销毁

  访问修饰符可以修饰实例变量,⼀般是私有的,private修饰,然后通过⽅法来进⾏查看或者修改

public class Student {
 //介绍前缀
 public static final String PREFIX = "我是叫";

 //年龄
 private int age;

 //姓名
 private String name;

 public int getAge() {
 return age;
 }
 public void setAge(int age) {
 this.age = age;
 }
 public String getName() {
 return name;
 }
 public void setName(String name) {
 this.name = name;
 }
}

局部变量

  ⽅法中的变量

  声明在⽅法、构造⽅法、语句块、形式参数等

  ⽣命周期:当它们执⾏完成后,变量将会被销毁

  访问修饰符不能⽤于局部变量

  局部变量没有初始值,必须初始化后才可以被使⽤

public class Student {
 //介绍前缀
 public static final String PREFIX = "我是叫";

 //年龄
 private int age;

 //姓名
 private String name;

 public int getAge() {
 return age;
 }
 public void setAge(int age) {
 this.age = age;
 }
 public String getName() {
 return name;
 }
 public void setName(String name) {
 this.name = name;
 }

 //⾃我介绍⽅法
 public String introduce(){
 String content = PREFIX + name + ",年龄是" + age;
 return content;
 }
}
dayehui
原文地址:https://www.cnblogs.com/zrh-960906/p/14053285.html