zoukankan      html  css  js  c++  java
  • 【JAVA语法】01Java-变量与数据类型

    • 数据类型初阶

    • 基本数据类型的包装类

    • 整数类型&浮点类型&字符类型

    • 大小类型转换

    • 通过Scanner从控制台获取数据

    • 变量相关基础算法

    • Java的错误类型

    • 字符串String

    • 补充-Package

    一、数据类型初阶

    • 栈空间(Stack)

    1.存取效率高,存储空间小
    2.JVM将基本数据类型存储于Stack

    • 堆空间(Heap)
      1.存取效率较低,存储空间大()
      2.类型:数组、字符串、对象
      3.存放位置随机分配

    • 字面量:
      Java的变量和变量中存放的具体的数据称为字面量,eg.常量

    • 驼峰命名法:
      sumScore

    二、基本数据类型的包装类

    eg.Interger类
    1.封装了实用的方法和常量
    int Integer.parseInt(String SInteger);//将String类型的整数转换成int类型 //parse:解析
    2.在集合中用来定义集合元素的类型

    三、整数类型

    1.java底层byte和short按照32位(int类型)计算

    	byte b1 = 5;  
    	//error:byte b2 = b1+3;  	//b1+3 default ——>int   
    
    	byte b2 = (byte) b1 +3 ;  	//right
    	int  b2 = b1+3;
    

    四、浮点类型

    1.Defalut result = Double;
    字面量结果double

    //Example
    float f = 5.3; //Error:
    float f = 5.3f;//Ok
    

    2.精度:小数是以尾数长度来表示精度的。
    eg.pi = 3.1415 的精度是4
    3.结果为近似,有误差

    五、字符类型

    Java底层使用Unicode编码的一部分,1个char 16 bit (即2 bytes)  
    

    六、类型转换

    小类型——>大类型

    1.自动类型转换,由JVM负责,隐式类型转换
    2.规则:符号位自动拓展,负数补1,正数补0
    3.小类型向大类型转换一般是安全的,当小类型的精度高于大类型时要注意精度丢失的隐患

    //int——>float 丢失精度
    //float 尾数精度23位
    	int i = 0x1000001;//7位*4(16进制与2进制1比4转换) 28位二进制
    	float f = i;
    	System.out.println(Integer.toBinaryString(i)+":"+i);
    	System.out.println(Integer.toBinaryString((int) f)+":"+f);
    
    

    大类型——>小类型

    1.强制类型转换(显式)
    2.边界数风险(数据位成为符号位或大类型的数据超过小类型的位数)
    

    通过args数组获取数据

    • 通过main方法的args数组可以从控制台获取一组字符串数据
    	配置 Run Configurations
    	New->Arguments->program arguments 中的值作为 args[] 的参数传入
    

    七、通过Scanner从控制台获取数据

    1.Scanner类位于java.util.Scanner包中,用于扫描从控制台输入的数据,可以接受字符串和基本数据类型的数据。

    	String next();		//接收从控制台输入的一个字符串,End with Space or Enter
    	String nextLine();	//可接收空格,End with Enter 
    	int nextInt();		//接收从控制台输入的一个int类型的数据
    

    2.输入char类型的数据

    	char String.charAt(int index);	//从字符串中获取指定下标的字符,下标从0开始
    	"abc".charAt(0)的值为a;
    	char name = scanner.next().charAt(0);				//从控制台输入中取第一个字符
    
    
    1. 使用步骤
      Scanner scanner = new Scanner(System.in);//创建Scanner类的一个对象
      System.out.println("Name:");
      String name = scanner.next(); //通过scanner调用next等方法,接收控制台输入的数据

    八、变量相关算法

    自增、自减、自乘和自除

    	int i = 1;
    	System.out.println(++i);//先加1,再输出
    
    

    互换两个变量值的算法

    • 解法1 中间变量
    	int a = 100;
    	int b = 50;
    	int c = a;
    	a = b;
    	b = c;
    
    
    • 解法2 不借助中间变量,仅在两个变量之间交换值
    	int a = 100;
    	int b = 50;  
    
    	a = a+b;	//result: a = a+b; b= b;
    	b = a-b;	//result: a = a+b; b= a;
    	a = a-b;	//result: a = b; b= a;
    

    九、Java的错误类型

    • 编译用法错误
    • 运行异常错误
    • 运行逻辑错误

    十、字符串String

    10.1 String字符串

    1. 实例化String对象
    	String str1 = "Hello";     //直接赋值,更优
    	String str2 = new String("Hello");//使用关键字new,开辟了两片内存
    

    2.内容比较

    	String str1 = "Hello";                   //直接赋值,更优
    	String str2 = new String("Hello");       //使用关键字new,开辟了两片内存
    	System.out.println(str1 == str2)         //OUTPUT:false
    	System.out.println(str1.equals( str2 ))  //OUTPUT:false
    
    "==" ——>地址比较
    "equals"方法——>内容比较
    

    注:字符串操作尽可能多使用封装函数
    3.String字符串内容不可更改

    	public static void tell(String s){
    		s = "I love coding.";
    	}
    
    	public static void main(String[] args) 
    	{
    		String str = "Hello";
    		System.out.println(str.toString());
    		tell(str);
    		System.out.println(str.toString());
    	}
    		
    	}
    	OUTPUT:	Hello
    			Hello
    	
    
    	String str = "hello"
    	str = str + "world";
    
    

    改变的而是堆内存地址的指向,原内容暂时未被释放

    注:每次String更改内容,其本质是开辟了新的内存空间,耗资源,不提倡,应改用
    StringBuffer操作类

    10.2 String字符串常用方法

    	//1.字符串长度length()
    
    	String str = "helloworld@"
    	System.out.println(str.length());  
    
    	//2.字符串转化为数组toCharArray()
    	char data[] = str.toCharArray();
    	for (int i = 0;i < data.length;i++)
    	{
    		System.out.print(data[i]+" ");
    	}
    	OUTPUT:h e l l o w o r l d @
    
    
    	//3.从字符串中取出指定位置的字符 charAt()  
    	System.out.println(str.charAt(7)); 
    	OUTPUT: r //第八个字符 ,由于从0开始计数  
    
    	//4.过滤字符串中存在的字符 indexOf()
    	str.indexOf("@");
    	OUTPUT:11	//查找并返回位置  
    
    	//5.去掉字符串中的空格:trim()
    
    	//6.从字符串中取出子字符串:subString()  
    
    	//7.大小写转换:toLowerCase()  toUpperCase();  
    
    	//8.判断字符串的开头结尾字符:endsWith() startWith()
    
    	//9.替换字符串中的一个字符: replace()
    

    10.3 StringBuffer操作类

    1.StringBuffer缓冲区可以被更改(区别于String)
    ```java
    	public static void tell(StringBuffer s){
    	s.append(" I love coding.");
    }
    
    public static void main(String[] args) 
    {
    	StringBuffer buffer = new StringBuffer();
    	buffer.append("helloword"); //追加内容
    	System.out.println(buffer.toString());
    	tell(buffer);
    	System.out.println(buffer.toString());
    }
    	
    }
    
    OUTPUT:	helloword
    		helloword I love coding.
    
    ```
    
    2.StringBuffer常用方法  
    ```java
    buffer.append("Coding");//追加
    buffer.insert(0,"I love");//从第0个位置开始插入
    buffer.replace(start,end,"替代内容");
    ```
    

    10.4 StringBuilder

    • 一个可变的字符序列,作为StringBuffer的一个简单替换,用在字符串缓冲区被单个线程使用的时候,效率比StringBuffer高

    • 涉及到线程安全——>建议用StringBuffer

    补充

    Package

    Java中的一个包就是一个类库单元,包内包含有一组类,它们在单一的名称空间之下被组织在了一起。这个名称空间就是包名。

  • 相关阅读:
    python os模块 常用命令
    将excel表格中的数据导入到SQL中
    临时数据表DataTable selected方法的使用
    ASP.NET数据库使用精典读取数据库中数据
    新兵开唱
    DropDownList控件的changed事件调用
    C# 读取Excel表格中的数据
    C# 强制类型转换示例
    用ADO.NET的ExecuteScalar方法返回单一值
    CentOS 6.3 桥接上网
  • 原文地址:https://www.cnblogs.com/Neo007/p/6805519.html
Copyright © 2011-2022 走看看