2020-09-24

关键字和保留字

  1. 关键字(keyword)
    关键字中所有字母都是小写
    true、false、null 不算关键字 但基本当作关键字来用
  2. 保留字(reserved word)
    现有java版本没用,但以后可能会作为关键字用,自己命名标识符的时候要避开
    goto、const

标识符

  1. 凡是自己可以起名字的地方都叫标识符。如:类名、变量名、方法名
  2. 标识符的命名规则:
  • 由26个字母、下划线、$组成
  • 数字不能开头
  • 不可以使用关键字和保留字,但能包含
  1. 标识符命名规范:
    包名:多单词组成所有字母小写

类名、接口名:多单词组成,所有单词首字母大写
变量名、方法名:多单词组成,第一个单词首字母小写,第二个单词开始每个单词首字母大写
常量名:所有字母都大写

变量

变量要声明且显示赋值过才能使用。

基本数据类型

在这里插入图片描述

整型

声明long型变量必须以L或l结尾。不加会被认为是int,因为整型常量默认类型是int型

long l = 123123; //int转long 可以
long l1 = 2345545455443434343343; //报错 int存不下这么大的数
long l2 = 2345545455443434343343l; //对

浮点类型

float型后面一定要加f,浮点型常量默认类型为double型。

float f1 = 12.3;//报错 double转float需要强制类型转换
float f2 = 12.3f;//对

float的存储需求虽然是4字节,但表示数值的范围比long还大。因为float和double存的时候采用二进制系统表示,即一部分是存10的几次方,一部分存的是具体的值。

有时候精度不准确,如果不允许有任何舍入误差,要用BigDecimal类。

字符型

字符型的表示方式:

  1. 声明一个字符
char c1 = '1'
char c2 = '中'
  1. 转义字符
char c5 = '\n' //换行符
char c4 = '\t' //tab 制表符 4个空格

注意:

char型+char型 是会做运算

用+的时候考虑好是想让char做运算还是 两个char连接

布尔型

java的boolean类型只有false和true。不能用0和1

  1. 直接用unicode值来表示
char c6 = '\u0043'

基本数据类型转换

自动提升类型

当容量小的数据类型的变量与容量大的数据类型的变量做运算时,结果自动提升为容量大(表示数的范围的大和小)的数据类型。
byte、char、short–>int–>long–>float–>double
当byte、char、short 三种类型的变量做运算时,结果为int型

强制类型转换

可能损失信息的转换要通过强制类型转换来完成。
强制类型转换语法格式:
double x = 9.9
int nx =(int) x
Math.round、ceil等方法返回的结果是long类型,由于存在丢失信息的可能性,还是要用显示的强制类型转换转成int。

double x =9.9;
int nx = (int) Math.round(x);

引用数据类型

字符串 String

String
  1. 拼接
    String 可以和8种基本数据类型做运算,且运算只能是连接运算:+(连接符号),运算结果仍然是String类型
char c='a';
int num = 10;
String str = "hello";
System.out.println(c+num+str); //107hello char和int是97+10 = 107

join方法可用多个字符串放在一起,用一个界定分隔符

String all =
String.join("/","S","M","L","XL");
//all: "S/M/L/XL"

repeat方法

String repeated = "Java".repeat(3);//repeated
:"JavaJavaJava"
  1. 子串
    substring
String greeting = "Hello";
String s = greeting.substring(0,3);// 第二个参数是不想复制的第一个位置
  1. 不可变字符串

String类没有提供修改字符串中某个字符的方法。 修改字符串内容的方法:提取要保留的子串,再与希望替换的字符拼接。

 greeting = greeting.substring(0,3)+"p!";

不可变字符串的优点:编译器可以让字符串共享。

  1. 检测字符串是否相等
    equals方法 检测两个字符串是否相等
    equalsIgnoreCase 检测两个字符串是否相等,不区分大小写
    不要用==检测两个字符串是否相等,这个运算符只能够确定两个字符串是否放在同一个位置
  2. 空串与null串
    空串是长度为0的字符串,检测是否为空串的方法
if(str.length()==0)if(str.equals(""))

String 变量可以放一个特殊的值,名为null,表示目前没有任何对象与该变量关联。
检查一个字符串是否为null

if(str==null)

要检查一个字符串既不是null又不是空串

if(str!=null&&str.length()!=0)//要先检查str部位null,不是null才有长度
StringBuilder和StringBuffer

StringBuffer效率低,但允许采用多线程的方式添加或删除字符。
StringBuilder效率高,是单线程。
要用许多小段的字符串来构建一个字符串的时候就要用StringBuilder。步骤如下:

StringBuilder builder = new StringBuilder();
builder.append(ch);//单个字符
builder.append(str); //string
String ans = builder.toString();//转成String

进制与进制间的转换

所有数字再计算机底层都以二进制形式存在。
整数有二进制(0b或0B开头)、八进制(以数字0开头)、十进制、十六进制(以0
x或0X开头表示)四种表示方式。

二进制

二进制的最高位表示为符号位,0表示正数,1表示负数。
二进制有三种形式:原码、反码、补码
对正数来讲,原码反码补码都一样。对负数来讲:

  • 原码
  • 反码
    除符号位外 各个位取反
  • 补码
    在反码的基础上加1
    计算机底层都以补码的方式来存储数据
    二进制转十进制就是从右往左2的几次方相加
    十进制转二进制: 除2取余的逆
    二进制转八进制就是: 从低往高每三个一位

二进制转16进制就是:从低往高每四个一位

运算符

算术运算符

算数运算符:+ - + - * / % (前)++ (后)++ (前)-- (后)–

  1. 参与/运算的两个操作数都是整数,表示整数除法。否则,表示浮点除法。
  2. 取模%: 结果的符号与被模数的符号一样。即-12%5的结果是-2,而12%5的结果是2.
  3. 自增自减运算
    自增自减运算不会改变数据本身的类型
    前++: 先自增1,再运算
    后++: 先运算,后自增1

赋值运算符

=
支持连续赋值 int
i1,j2 =10;

+= -= /= *= %= 不会改变变量本身的数据类型,因为他会发生强制类型转换

short s1=10;
s1 = s1+2; //编译失败
s1+=2; //成功 因为+=不会改变变量本身的数据类型

比较运算符

比较运算符== !=

< >= <= instanceof

逻辑运算符

逻辑运算符操作的都是布尔型变量
逻辑运算符:

  • & 逻辑与
  • | 逻辑或
  • ! 逻辑非
  • && 短路与 左边为false 右边的运算就不会再执行
  • || 短路或 左边为true 右边的运算就不会再执行
  • ^ 逻辑异或 一样为false 不一样为true

位运算符

位运算符操作的都是整型数据.

位运算符:

  • << 左移
    在给定的范围内,每向左移一位,相当于乘以2。左操作数是int型,移位运算符的右操作数要完成模32的运算(1<<35的值等同于1<<3等于8);左操作数是long型,移位运算符的右操作数要完成模64的运算;
  • >>右移 用符号位填充高位

在给定的范围内,每向右移一位,相当于除以2

  • >>> 无符号右移 用0 填充高位
  • & 与运算
  • | 或运算
  • ^ 异或运算
  • ~ 取反运算 包括符号位在内
    使用位运算符可以实现两个数的交换
num1 = num1^num2;
num2 = num1^num2;
num1 = num1^num2;

三元运算符

(条件表达式)?表达式1:表达式2

三元运算符的效率比ifelse高

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值