1.标识符:需要自定义名称都叫标识符.eg:类名,变量名,方法名
1.1:标识符只能由字母,数字,_,$组成.
1.2:标识符只能以字母,_,$开头.
1.3:标识符可以包含数字,但是不能以数字开头.
1.4:标识符除了_,$以外,不能包含其他任何特殊字符.
1.5:标识符不能用java中关键字.
1.6:标识符按义取名.
帕斯卡命名法:标识符可以由一到多个单词组成,每个单词首字母大写,其他的写.类名采用帕斯卡命名法.eg:StudentName
驼峰式命名法:标识符可以由一到多个单词组成,第一个单词首字母小写,其他单词首字母大写,其他小写.一般情况下,变量名和方法名采用驼峰式命名法.eg:studentName
3.变量:在内存中开辟一块空间存值.
3.1:变量三要素:变量名(自定义),变量类型,变量值.
3.2:变量必须先声明赋值,才能使用.
3.3:=:赋值号,将等于号右边值赋给左边.
3.4:变量声明和赋值的语法:
3.3.1:先声明变量,再给变量赋值
声明变量的语法: 数据类型 变量名;
给变量赋值的语法: 变量名=变量值;
注意:声明多个数据类型相同变量, 数据类型 变量名1,变量名2;
eg://声明变量
String name;
//给变量赋值
name="张三";
3.3.2:声明变量的同时赋值: 数据类型 变量名=变量值;
eg://声明变量的同时赋值
int age=18;
float height=1.88f;
double weight=100.5;
char sex='男';
boolean maritalStatu=true;
3.5:变量分类
3.5.1:按数据类型分:
基本数据类型的变量:只要变量的数据类型是byte,short,int,long,
float,double,char,boolean
引用数据类型的变量:变量的数据类型是数组,类,接口等
3.5.2:按声明位置分:
局部变量:在方法中声明的变量叫局部变量,局部变量在声明它的大括号中有用.
成员变量:在类中,方法外面声明的变量叫成员变量.
注意:局部不赋值,没有值,就不可以直接用;成员变量不赋值,系统会给它分配默认值.
3.6:在同一个作用范围内不能声明相同的变量名.(在同一个大括号中不能声明相同变量名);
3.7:常量:在内存中开辟一块空间存固定值.常量一生中只能赋一次值.
常量声明语法:final 数据类型 常量名=值;(常量名全大写)
eg://声明常量的同时赋值
final double PI=3.14;
//先声明常量再给常量赋值
final double NUM;
NUM=3.15;
4.java中常用数据类型
4.1:基本数据类型
byte:8个字节
最小值是 -128(-2^7);
最大值是 127(2^7-1);
short:16个字节
最小值是 -32768(-2^15);
最大值是 32767(2^15 - 1);
int:32个字节
最小值是 -2,147,483,648(-2^31);
最大值是 2,147,483,647(2^31 - 1);
long:64个字节
最小值是 -9,223,372,036,854,775,808(-2^63);
最大值是 9,223,372,036,854,775,807(2^63 -1);
float:32个字节
4个字节单精度,精度是8位有效数字
double: 64个字节
8个字节双精度类型,精度是17位有效数字
char:
' ' 用来标识它们引用数据的开始和结束,char内型用到的是ascll编码,java用到的是Unicode;两个char型运算时,自动转换为int型;当char与别的类型运算时,也会先自动转换为int型的,再做其它类型的自动转换
基本类型向类类型转换
4.2:引用数据类型
存1个到多个字符:String 注意:字符串类型的值要加双引号.
eg:public static void main(String[] args){
//声明变量
String name;
//给变量赋值
name="张三";
//声明变量的同时赋值
int age=18;
float height=1.88f;
double weight=100.5;
char sex='男';
boolean maritalStatu=true;
//输出变量
System.out.println(name);
System.out.println("年龄为:"+age);//+起连接作用
System.out.println("身高:"+height+",体重:"+weight+",性别:"+sex);
System.out.println("婚否:"+maritalStatu);
}
5.数据类型转换
5.1:自动类型转换: 语法: 大数据类型 变量名=小数据类型的变量;
兼容:类型要能相同或相近.
5.1.1:两种数据类型要兼容.
5.1.2:小类型转换为大类型.
eg://声明变量同时赋值
int num1=11;
//声明变量赋值,自动类型转换
double num2=num1;
//自动类型转换
float num3=num1;
float num4=22;
5.2:强制类型转换: 语法:小数据类型 变量名=(小数据类型)大数据类型的变量;
注意:强制类型转换有风险.
5.2.1:两种数据类型要兼容.
5.2.2:大类型转换为小类型.
eg://声明变量同时赋值
double num5=3.14;
//强制类型转换
int num6=(int)num5;
5.3:char与int之间相互转换:因为ansi码表,char类型字符都有对应int数字
5.3.1:char转换为int,发生自动类型转换
eg://声明变量同时赋值
char c1='a';
//自动类型转换:小类型转换为大类型,两种类型有ansi码表对应
int num8=c1;//97
5.3.2:int转换为char,用强制类型转换
eg://声明变量同时赋值
int num9=100;
//强制类型转换:大类型转换为小类型,两种类型有ansi码表对应
char c2=(char)num9;
5.4:算术式子中有一个为大类型,整个式子结果提升为大类型.
eg:int a=10;
double result=a+9.8;
5.5:如果强制转换的变量值超过目标类型取值范围,在取值范围内转圈圈
如果取值范围包含0:结果=值-max+min-1
如果取值范围不不包含0: 结果=值-max+min
byte a=(byte)200;//-56
6.运算符:
6.1:算术运算符:+,-,*,/,%,++,--
6.1.1:-,*与数学中使用是一样的.
6.1.2:+:如果+左右两边是数字,+起算术运算,求和.
+:如果+左右两边有一边是字符串,+起连接作用
6.1.3:/:作除法运算.注意:在Java中,整数=整数/整数
eg://+作算术运算作用
System.out.println(1+1);//2
//两个+起连接作用
System.out.println("1"+1+1);//111
//第一个+起算术作用,第二个+起连接作用
System.out.println(1+1+"1");//21
//在Java中,整数=整数/整数
int num1=10/2;//5
int num2=10/3;//3
//在算术式中,有一个数为大类型,结果就提升为大类型
double num3=10/3.0;//3.33
注意:不要用浮点数做运算
double a=0.1+0.2;
double b=0.3;
if (a==b){
System.out.println("asda");
}
6.1.4:%(求余运算/取模运算符):求两个数的余数.
eg:int num4=10%3;//1
//给你一个随机四位整数,求这个四位数的各位数字之和,
//eg:int num=1234; sum=1+2+3+4;
int num5=4567;
int gewei=num5%10;//4
int shiwei=num5/10%10;//4
int baiwei=num5/100%10;//2
int qianwei=num5/1000;//2
int sum=gewei+shiwei+baiwei+qianwei;
6.1.5:++:在自身基础上加1.--在自身基础上减1.
int num=8;
++num:num先自身加1,再参加运算
num++:num先执行运算,再自身加1
--num:num先自身减1,再参加运算
num--:num先执行运算,再自身减1
eg:int a=8;
int result1=(a++)+(++a)+(--a)+(a--);
//分析:result1=8+(++a)+(--a)+(a--); a=9
//result1=8+10+(--a)+(a--); a=10
//result1=8+10+9+(a--); a=9
//result1=8+10+9+9; a=8
System.out.println("result1="+result1+",a="+a);//36,8
6.2:关系运算符:>,<,>=,<=,!=,==
6.2.1:>,<,>=,<=,!=与数学中用法一致.
6.2.2:==:在java中表比较.
eg:double luoheight=1.8;
double myheight=1.6;
boolean result1=luoheight==myheight;
int a=8;
int b=a;
int c=b=a;
6.3:逻辑运算符:且(&,&&),或(|,||),非(!)
6.3.1:非(!):非真即假,非假即真.
6.3.2:且(&,&&):且左右两边的式子全真,结果为真;有一边为假,结果为假.
&(普通且):&两边的式子都会判断执行.
&&(短路且):&&左边式子为假,右边式子不会判断执行;&&左边式子为真,右边要判断执行(有假就结束判断)
6.3.3:或(|,||):或左右两边的式子有一个为真,结果为真;两边式子全为假,结果为假.
|(普通或):|两边的式子都会判断执行.
||(短路或):||左边式子为真,右边式子不会判断执行;||左边式子为假,右边要判断执行.(有真就结束判断)
注意:一般情况下,用短路且和短路或.
eg:int a1=8;
//boolean result1=++a1<8&a1-->=8;
//boolean result2=++a1<8&&a1-->=8;
//boolean result3=++a1>8|a1-->=8;
boolean result4=++a1>8||a1-->=8;
6.3.4:^(抑或):^左右两边值是boolean类型.^左右两边相同为false,不同为true
eg://^左右两边相同为false,不同为true
boolean result5=true^false;
6.4:赋值运算符:=,+=,-=,*=,/=
6.4.1:=:将等于号右边值赋给左边.
6.4.2:+=,-=,*=,/=:将赋值号左边的值加上/减去/乘以/除 右边的数据得到的结果赋给左边.
eg:byte b1=1;
b1+=1; //b1=(byte)b1+(byte)1
6.5:运算符优先级:()>算术运算符>关系运算符>逻辑运算符>赋值运算符
6.6:位运算符:>> << >>>
int num=10;
int v = num <<1;
相当于num*2也相当于二进制向右移动一位
int v = num >>1
相当于num除以2也相当于向左移一位
int num= -10;
注意负数在线工具测试不出,可以使用方法去测试
Integer.toBinaryString
https://tool.lu/hexconvert/ 在线工具
7.(扩展)n进制:逢n进1
解释:2^1 等价于2的一次方
2E1 等价于2乘以10的一次方
2E-1 等价于2乘以10的-1次方
7.1:十进制转为n进制:将十进制数用短除法,除到商为0,再将余从下向上写就是结果.
7.2:n进制数转换为十进制:将n进制的数从右边到左边:
右边第一个数*n^0+右边第二个数*n^1+右边第三个数*n^2...
十进制 二进制(ob) 八进制(0) 十六进制(0x)
1 0b1 01 0x1
2 0b10 02 0x2
9 0b1001 011 0x9
17 0b10001 021 0x11