博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【JAVA语法】01Java-变量与数据类型
阅读量:6095 次
发布时间:2019-06-20

本文共 4471 字,大约阅读时间需要 14 分钟。

  • 数据类型初阶
  • 基本数据类型的包装类
  • 整数类型&浮点类型&字符类型
  • 大小类型转换
  • 通过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

//Examplefloat 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,开辟了两片内存

1143923-20170517171534260-359638887.jpg

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";

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

1143923-20170517171431791-1931065172.jpg

注:每次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常用方法  ```javabuffer.append("Coding");//追加buffer.insert(0,"I love");//从第0个位置开始插入buffer.replace(start,end,"替代内容");```

10.4 StringBuilder

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

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

补充

Package

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

转载于:https://www.cnblogs.com/Neo007/p/6805519.html

你可能感兴趣的文章
锐捷RG-WALL60防火墙配置详解
查看>>
远程桌面
查看>>
2015年下半年软考中高级学员精讲班 第四章
查看>>
DNS域传送泄露漏洞测试方法
查看>>
原创经验:微信小程序开发总结
查看>>
创建swap文件与删除swap分区
查看>>
Linux Shell实现多进程并发执行
查看>>
MySQL的timeout相关配置参数小结一把
查看>>
我的友情链接
查看>>
Apache Spark探秘:Spark Shuffle实现
查看>>
dubbo
查看>>
linux高级文件管理系统
查看>>
下一代云计算平台Apache Mesos定制自己的PaaS-1(Apache Mesos安装部署)
查看>>
四层和七层负载均衡的区别
查看>>
Heritrix maven
查看>>
解决Lync联盟用户之间只能IM聊天不能进行A/V呼叫问题
查看>>
java Log日志规范
查看>>
Linux系统日常管理
查看>>
深入理解PHP中的Session和Cookie
查看>>
Apache 日志分析
查看>>