美文网首页
java学习笔记_课时二

java学习笔记_课时二

作者: 你猪头啊 | 来源:发表于2019-03-17 14:15 被阅读0次

课时二,我们正式开始学习java相关语法,数据结构等知识。
1、数据类型
java的基本数据类型共九种,我们通过表格的形式展现

Type Size Range
byte 8 -128~127
short 16 -2^15 ~ 2^15-1
int 32 -2^31 ~ 2^31-1
long 64 -2^64 ~ 2^64-1
boolean 8 true false
char 8 0~65535
float 32 符号(1)+阶码(8)+尾数(23)
double 64 符号(1)+阶码(11)+尾数(54)

这里我们着重讲几个数据类型。
boolean
这是布尔类型,在c/c++里由bool关键字确定。在java中,这种类型的返回值与c/c++有一些区别。在c/c++中,真值为1,假值为0,也就是说true=1,false=0。而在java中,boolean的返回值只有true与false,也就是说他们不等于数值。
char
这是字符类型,与c/c++的关键字相同,但c/c++中的char是8位,而java中的char类型却是16位,这是由于编码的不同引起的,java采用UNICODE字符集进行编码,在这种编码方式中,16位恰好能完全表示99%的常用汉字与英文字母等,所以在java中采用16位的char。
整型常量
很显然,他与变量相对,如

int i=16;//16就是整型常量

这里要注意几点:
1、默认类型为int,当然你也可以定义为long、short、byte型。
2、表示方式
如 12 的表示方式
十进制 12
八进制 014
十六进制 0xc
3、long型常量定义
注意一下语法格式:

long tl=123L;

char型常量
1、表示方式
直接给值:

char c1=65;//这种方式仅适用于单个字符,不适用于字符串,值的范围在0-65535之间

字符给值:

char c2='啊';

八进制给值:

char c3='\081';//反斜杠为转义字符,ASCLL码

十六进制给值:

char c4='\u1234';//UNICODE字符集

注意八进制与十六进制给值时编码方式的不同。
2、java中判断汉字的方法
敲黑板,这里公司面试有考过哦
在java中,根据UNICODE字符集编码,十六进制'\u4e00'~'\u9fa5'判为汉字。
3、自动类型转换
既然讲到了数据类型,就不免要提到数据类型之间的转换。转换分为强制转换和自动转换。显然,在不能自动转换的情况下,我们又需要转换,就使用强制类型转换。
强转语法:

int i=65;
char c=(char)i;

自转规则(->表示转换方向):
byte->所有类型;
short->除byte与char之外所有;
int->long,float,double;
long->float,double;
float->double;
char->int,long,float,double;
这里要注意,自转并不是百分百安全的,仍要注意精度丢失的问题,比如int有效位数是32位,而float有效位数只有23位,转换存在精度丢失的问题。
3、运算符
与c/c++大同小异,这里只讲几个重要的
%取余运算符
要注意符号问题,结果符号与被除数符号一致。
3%2=1;
-3%2=-1;
-3%-2=-1;
3%-2=1;
+加号运算符
a=b+f;
+号左右两数至少为int型,低于int转为int进行运算;
例题:

byte ba=0;
ba=2+ba;

java编译会报错,原因是,在计算2+ba时,按照int+int进行计算,结果一定是int型,而ba是byte型,int到byte不能自动转换。
修改(强制类型转换):

byte ba=0;
ba=(byte)(2+ba);

>>算术右移
这里主要区分一下算数右移与逻辑右移:
算术右移,移动完之后,在左边补上符号位;
逻辑右移,移动完之后,在左边补0;
算术右移n位,等于原数/2^n;
那么逻辑左移与算数左移呢,emmm逻辑左移=算数左移,移动完之后,右边都补0;相当于原数*2^n;但是要注意数据溢出的问题哦。
思考一下
-1>>1=?;-1>>n=?
答案都是 -1。
解析:-1(B)=11111...1111;不论怎么右移,左边补符号位,还是1111...1111;所以-1>>n=-1;
再思考一下

byte b1;
b1+=1;
b1=b1+1;

这两行代码一样吗?
答案: 第二行代码不报错,第三行代码报错。
解析:第三行代码上面解释过,将int型结果赋值给byte型,由于不存在int到byte的自转,会报错,而第二行代码等价于b1=(byte)(b1+1);进行了强制转换,所以不会报错。但如果循环的话仍然要注意数据溢出的问题哦。

相关文章

  • java学习笔记_课时二

    课时二,我们正式开始学习java相关语法,数据结构等知识。1、数据类型java的基本数据类型共九种,我们通过表格的...

  • java学习笔记_课时一

    在学习具体java语言编程之前,我们需要对java有一定的基础了解。1、java的种类a.java EEjava ...

  • java io

    参考Java IO学习笔记(一):File类Java IO学习笔记(二):RandomAccessFile类Jav...

  • 2018-12-04Java第一季

    Java笔记(主要为语法,c/c++相同未写) 学习链接为:Java学习第一季Java学习第二季Java学习第三季...

  • nio

    参考文章 Java Nio Java NIO学习笔记 - NIO客户端时序图 Java NIO学习笔记 - NIO...

  • Java 学习笔记(13)——lambda 表达式

    title: Java 学习笔记(11)——lambda 表达式tags: [Java 基础, 学习笔记, 函数式...

  • 文章目录

    Markdown学习 Markdown学习 Java学习 Servlet学习笔记 Java问题 Tomcat问题修...

  • Java学习日记

    title: Java学习笔记date: 2018-05-18 12:00:00tags: Java 学习笔记 P...

  • JAVA学习笔记(二)

    前言: 这几天看了Java的基本语法和一些特性,今天就比较下和OC与C的不同点,方便自己记忆。 一、基本语法 先从...

  • JAVA学习笔记(二)

    1.方法定义 方法(Method)、函数(Function)其实就是指一个特定的功能操作如果方法使用了static...

网友评论

      本文标题:java学习笔记_课时二

      本文链接:https://www.haomeiwen.com/subject/ccbemqtx.html