第一章 java基础学习

java环境搭建资源

JDK1.8
  链接:   https://pan.baidu.com/s/18g5ZXcXmABDeru1r2Yc9xA
提取码:1mnq

Eclipse
(免安装,解压直接使用)
  链接:https://pan.baidu.com/s/1SyBcBjdMLyQU87M7VU2nYw
提取码:65rz

一.java变量

使用变量前需要先声明: 数据类型 变量名;
在声明变量时可以同步赋值:数据类型 变量名=值;

int a;
System.out.println(a);

//变量是命名的内存空间
//只有给变量赋值了,该变量才有关联的内存空间。

二.java数据类型

java有无数种数据类型
分为两大类
  基础数据类引用数据类型

  • 八种基础数据类

整形

byte 1字节 8位 -128~127

short 2字节 -28~28-1

int 4字节 32位 -231~231-1

long 8字节 64位 -263~263-1

浮点型

(单精度)float 4字节 -231~231-1

(双精度)double 8字节 -263~263-1

字符型

char 2字节 \u0000~\uFFFF

布尔型

boolean 1字节 1

计算机是通过补码存储数据
正数的补码是原码它本身
负数的补码是原码符号位不变,其他位取反+1

例:
  byte类型是一字节为8位

表示的数字大小范围
  -128~127

二进制表示
  0 1 1 1 1 1 1 1

最高位是符号位,0表示正数,1表示负数

-127
  127为
  0 1 1 1 1 1 1 1
  取反
  1 0 0 0 0 0 0 0
  加1得到
  1 0 0 0 0 0 0 1

  • 思考

float能表示的数据大,还是long能表示的数据大
  float 4 long 8
    float 内部机制涉及到科学计数法,能表示的数据大。
    科学计数法(把一个数表示成a与10的n次幂相乘的形式)
    例:306.9表示为3.069*102 == 3.069e2
  
  char一定是两个字节吗?
    不是的,这个跟我们选用的字符编码有关,如果采用”ISO-8859-1”编码,那么一个char只会有一个字节。采用”UTF-8”或者“GB2312”、“GBK”等编码格式是动态长度的,如果是英文字符,大家都是一个字节。如果是中文,”UTF-8”是三个字节,而”GBK”和”GB2312”是两个字节。而对于”unicode”而言,无论如何都是两个字节。
    
  中文字符可以存储在char里面吗?
    对于一个char如果用”ISO-8859-1”来存储的话,肯定无法存储一个中文,而对于”UTF-8”、“GB2312”、“GBK”而言大多数中文字符是可以存储的。

  • 数据类型的强制转换与自动转换问题
    自动转换:
    在运算时,如果参与运算的数据的数据类型不相同,那么会自动将低级数据类型转换为高级数据类型,运算结果也是高级数据类型。

强制转换:
将高等级的数据类型,赋值给低等级数据类型,不能直接赋值,需要程序员显式声明。

数据类型强制转换时会失去精度
例:

byte a = (byte)129;
System.out.println(a);
a = -127

129 32位 -------》8位 0(23个0)10000001—砍掉多余的位—》10000001 原码取反+1成为补码
10000001 减1 10000000
10000000 取反 00000001 == -127

  • 问题

1 .一个整型变量定义后,如果不赋值那么它的值为0,这种说法是否正确? 错
int a; syso(a); //报错,不赋值不能使用

2 基础数据类型之间可以互相转换,这种说法是否正确? 错
boolean不能与其他的类型转换

3 short a = 3; a = a+1; 这么写是否正确? 错
a为short 1为int ,a+1运算时,会自动将short—>int,运算结果也是 int, int----->a报错,需要强制转换

4 int a = (int)1.3+1.5是否正确?错误
int a = (int)(1.3+1.5);// 2

5 已知int能表示的最大的数是2147483647,那么定义long a = 2147483648; 是否正确? 错误
long a = 2147483648L;

三.java运算符

  • 算术运算符:

” + - * / % “
int a = 5;
int b = 3;
double c = 2.0;
a/b=1
a%b=2 (%是求余数)
a/c = 2.5 (一次自动转换)
6/c = 3.0 (即使能整除,结果也是double类型)
a+b/c = 6.5 (先乘除,再加减)

  • 自增自减运算符:

int a = 1;

b = a++;//1 b = a; a=a+1;

c = ++a;//3 a = a+1; c = a;
++在变量后,先去掉++符号,运算表达式;然后再给变量自增1。
++在变量前,先给变量自增1;然后再运算表达式。
自减运算符的规则与自增相同。
int a = 2++;(这是错误的写法,自增自减只是用在变量上)
int a=3;
a++; (单独写a++和++a,效果一样,都表示该变量自增1)
int b = a;//4

  • 比较运算符

< == >= <= !=
比较运算符的运算结果是布尔类型
5>3 true
5>=3 true
5==3; false
5!=3; true

  • 逻辑运算符

与或非
&& || !
参与运算的都是布尔类型的数据
5&&3 (错)
5>3 && 3<5 ==》 true 两个都为真,结果才为真
5>3 || 3>5 ==》 true 一个为真,结果即为真
!(5>3) ==》 false 非真即假,非假即真
5>3 || 5>6 && 5<1 ==》true
!的优先级高于&&,&&的优先级高于||

  • 赋值运算

= += -= *= /= %=
int a=3;
int b = 5;
a = b;(从右向左运算,将b的值赋值给a)
a = b = 5;(连等)
a+=5; ==》 a=a+5;

  • 位运算

按位与& (两个位都是1,结果是1,否则是0)
按位或 | (两个位都是0,结果是0,否则为1)
按位异或 ^(两位不相同,结果为1,否则为0)
按位取反 ~ (将该数的1变为0,0变为1)

移位运算
5>>2 —》1 (高位补符号位)
0 0 0 0 0 1 0 1
0 0 0 0 0 0 0 1
右移n位,相当于除以2的n次方
5<<2 —》20 (低位补0)
0 0 0 0 0 1 0 1
0 0 0 1 0 1 0 0
左移n位,相当于乘以2的n次方

  • 三元运算符

逻辑判断? 表达式1: 表达式2
如果逻辑判断成立,取表达式1的值,否则取表达式2的值。
int c = a>b? a:b; (c的值为a,b中大的那个)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值