一·数据类型

    1. 数据类型分为以下几种

  值类型,

  引用类型

  指针类型

 

 

2.如需得到一个类型或一个变量在特定平台上的准确尺寸,可以使用 sizeof 方法。表达式 sizeof(type) 产生以字节为单位存储对象或类型的存储尺寸。下面举例获取任何机器上 int 类型的存储尺寸:

Console.WriteLine("Size of int: {0}", sizeof(int));   //输出结果为4

 

二.拆箱和装箱

当一个值类型转换为对象类型时,则被称为 装箱;另一方面,当一个对象类型转换为值类型时,则被称为 拆箱。

object obj;
obj = 100; // 这是装箱  

 

 三·动态类型

动态(Dynamic)类型

您可以存储任何类型的值在动态数据类型变量中。这些变量的类型检查是在运行时发生的。

声明动态类型的语法:

dynamic <variable_name> = value;

例如:

dynamic d = 20;

动态类型与对象类型相似,但是对象类型变量的类型检查是在编译时发生的,而动态类型变量的类型检查是在运行时发生的。

四.字符类型

字符串(String)类型 允许给变量分配任何字符串值。字符串(String)类型是 System.String 类的别名。它是从对象(Object)类型派生的。字符串(String)类型的值可以通过两种形式进行分配:引号和 @引号。

String str = "alex";

string str = @"C:\test"; 等价于: string str = "C:\\test";
@ 字符串中可以任意换行,换行符及缩进空格都计算在字符串长度之内。 string str = @"<script type=""text/javascript""> <!-- --> </script>";

  

五.指针类型

char* ch;
int* ia;

  

六.类型转换

1.隐式类型转换 - 这些转换是 C# 默认的以安全方式进行的转换, 不会导致数据丢失。

  例如,从小的整数类型转换为大的整数类型,从派生类转换为基类。

2.显式类型转换 - 显式类型转换,即强制类型转换。显式转换需要强制转换运算符,而且强制转换会造成数据丢失。

static void Main(string[] args)
        {
            double d = 5673.74;
            int i;

            // 强制转换 double 为 int
            i = (int)d;
            Console.WriteLine(i);
            Console.ReadKey();
            
        }

  

七.类型转换的方法

C# 提供了下列内置的类型转换方法:

序号	方法 & 描述
1	ToBoolean
如果可能的话,把类型转换为布尔型。
2	ToByte
把类型转换为字节类型。
3	ToChar
如果可能的话,把类型转换为单个 Unicode 字符类型。
4	ToDateTime
把类型(整数或字符串类型)转换为 日期-时间 结构。
5	ToDecimal
把浮点型或整数类型转换为十进制类型。
6	ToDouble
把类型转换为双精度浮点型。
7	ToInt16
把类型转换为 16 位整数类型。
8	ToInt32
把类型转换为 32 位整数类型。
9	ToInt64
把类型转换为 64 位整数类型。
10	ToSbyte
把类型转换为有符号字节类型。
11	ToSingle
把类型转换为小浮点数类型。
12	ToString
把类型转换为字符串类型。
13	ToType
把类型转换为指定类型。
14	ToUInt16
把类型转换为 16 位无符号整数类型。
15	ToUInt32
把类型转换为 32 位无符号整数类型。
16	ToUInt64
把类型转换为 64 位无符号整数类型。

static void Main(string[] args) { int i = 75; float f = 53.005f; double d = 2345.7652; bool b = true; Console.WriteLine(i.ToString()); Console.WriteLine(f.ToString()); Console.WriteLine(d.ToString()); Console.WriteLine(b.ToString()); Console.ReadKey(); }

  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

一·数组

1.当需要在java程序中记录单个数据内容时,则申明一个变量即可。

2.当需要在java程序中记录多个类型相同的数据内容时,则声明一个一维数组即可,一维数组的本质就是在内存空间中申请一段连续的存储单元。

3.数组是相同数据类型的多个元素容器,元素按线性顺序排列,在java语言中体现为一种引用数据类型。

二·一维数组的声明方式

String[] arr = new String[5];

调用数组的length属性可ui获取数组长度;

可以通过下标的方式去访问。对于长度为n的数组范围是0 ~n-1;

public static void main(String[] args) throws Exception{
int[] arr1 = new int[2];
System.out.println(arr1.length);
System.out.println(arr1[0]);
System.out.println(arr1[1]);
System.out.println(arr1[2]);//java.lang.ArrayIndexOutOfBoundsException 数组下标越界异常
}
//循环打印
    for(int i=0;i<arr1.length;i++){
        System.out.println(arr1[i]);
    }
//数组初始化方式
int[] arr1 = new int[5];  //动态初始化
int[] arr2 = {1,2,3}; //静态初始化
//特殊写法,静态方式
int[] arr3 = new int[]{1,2,3};

三·内存分析

  1. 栈区:用于存放程序运行过程当中的所有的局部变量,一个运行的java程序从开始到结束会有多次变量声明。

  2. 堆区:JVM会在其内存空间中开辟一个称之为堆的存储空间,这部分空间用于存储用new关键字创建的数组和对象。

四·数组的优缺点

  1. 可以直接通过下标的方式访问指定元素的位置,速度很快。

  2. 要求所有元素的数据类型一致。

  3. 要求内存空间必须连续,长度一旦确定就不能修改。

  4. 增加和删除元素时需要移动大量元素,效率低。

五·数组的拷贝

//数组的拷贝
int[] arr = {11,22,33,44,55};
int[] brr = new int[3];
System.arraycopy(arr,1,brr,0,3); //表示从数组arr中下标从1开始的三个元素拷贝到数组brr中下标从0开始的位置
for(int i =0;i<brr.length;i++){
System.out.println(brr[i]);
}

六·数组的工具类:

java.util.Arrays类可以实现堆数组中元素的便利查找排序等操纵

七·数组工具类常用的方法

  1. toString 输出数组中的内容

  2. fil 将参数指定元素复制给数组所有的元素

  3. equals 判断两个数组元素内容和次序是否相同

  4. sort 堆数组中的元素进行从小到大的排序

  5. binarySearch 从数组中查找参数指定元素所在的位置

 

/*
* 编程实现数组工具类的使用
* */
public static void main(String[] args) {
   //1.声明一个初始值为10,20,30,40,50的一维数组
   int[] arr = {10,20,30,40,50};
   //2.使用原始方式打印数组中的所有元素,要求打印格式为:[10,20,30,40,50]
   System.out.println("第一个数组中的元素有:"+"[");
   for(int i=0;i<arr.length;i++){
       if(i == arr.length-1){
           System.out.println(arr[i]);
      }else{
           System.out.println(arr[i]+", ");
      }
  }
   System.out.println("]");


   //3.使用数组工具类实现数组中所有的元素打印
   System.out.println("第一个数组的元素有"+ Arrays.toString(arr));
   System.out.println("==============");
   int[] arr2 = new int[5];
   Arrays.fill(arr2,7);
   System.out.println(Arrays.toString(arr2));

   //排序
   int[] scores = {10,20,80,70,50,30};
   Arrays.sort(scores);
   System.out.println(Arrays.toString(scores));

   //查找
   System.out.println(Arrays.binarySearch(scores,10)); //如果不存在则返回负数
}

八·二维数组

//声明和使用

int[][] arr = new[行数][列数];
int[][] brr = new [2][2]{{1,2},{3,4}}

 

int[][] brr = new int[2][6];
int[] arr = new int[6];
brr.length代表数组brr的长度,也就是元素的个数,也就是一维数组的个数, 也就是行数
brr[0].length代表数组中第一个元素的长度,也就是一维数组的长度,也就是第一行的列数。

//1.声明一个具有2行三列元素类型为Int类型的二维数组
    int[][] arr = new int[2][3];
    //打印数组中每个元素
    //使用外层for循环控制打印的行数
    for(int i=0;i<arr.length;i++){
        //使用内层for循环控制打印的列数
        for(int j =0;j<arr[i].length;j++){
            System.out.print(arr[i][j]);
        }
        System.out.println();
    }
    //实现二维数组的赋值
    int cnt =1;  //实现二维数组中的元素赋值
    for(int i =0;i<arr.length;i++){
        for(int j =0;j<arr[i].length;j++){
            arr[i][j] = cnt++;
        }

    }

    for(int i=0;i<arr.length;i++){
        //使用内层for循环控制打印的列数
        for(int j =0;j<arr[i].length;j++){
            System.out.print(arr[i][j]);
        }
        System.out.println();
    }

随堂练习

posted on 2020-09-16 23:17  我说我是大佬你信么  阅读(154)  评论(0)    收藏  举报