一.Java转义字符
常用转义字符:
- \t:一个制表位,实现对齐功能
- \n:换行
- \\:一个\
- \":一个"
- \':一个'
- \r:一个回车
代码学习描述:
//演示转义字符的使用
public class ChangeChar {
//编写一个main方法
public static void main(String[] args) {
//\t :一个制表位,实现对齐功能
System.out.println("北京\t天津\t上海");
//\n :换行符
System.out.println("jack\nsmith\nmary");
//\\ :一个\
System.out.println("C:\\\\Windows\\\\System32\\\\cmd.exe");
//\" :一个"
System.out.println("轶点点说:\"要好好学习\"");
//\' :一个'同理
//\r :一个回车,前几个字会被替换
System.out.println("嗯小铁的学习博客\r轶点点");
//\r\n :回车加换行,不会替换
System.out.println("嗯小铁的学习博客\r\n轶点点");
}
}
运行结果展示:
二.注释介绍
1.单行注释//
2.多行注释/* 注释文字*/,但注意不能继续嵌套多行注释
3.文档注释
注释内容可被JDK提供的工具javadoc所解析,生成一套以网页文件形式体现的该程序的说明文档,一般写在类。
格式:javadoc -d 文件夹名 -xx -yy 文件名.java
xx,yy为所用到的javadoc标签
eg./**
*@author 轶点点
*@version 1.0
*/
javadoc -d d:\\file -author -version Comment.java
javadoc标签汇总
三.DOS命令(了解)
常用dos命令:
1.查看当前目录有什么
dir 或 dir d:\abc2\test200
2.切换到其他盘下:盘符号cd
案例演示:切换到c盘 cd/D c:
3.切换到当前盘的其他目录下(使用相对路径和绝对路径演示)
相对路径:从当前目录开始定位,形成的一个路径。..\表示返回上级
绝对路径:从顶级目录开始定位,形成的路径
案例演示:cd d:\abc2\test200
cd ..\..\abc2\test200
4.切换到上一级
案例演示:cd ..
5.切换到根目录:cd\
6.查看指定目录下的所有子级目录tree
7.清屏cls
8. 退出DOS:exit
9.创建目录:md,删除目录:rd,拷贝文件:copy,删除文件:del,输入内容到文件:echo,剪切:move。
四.变量
变量是程序的基本组成单位,包括三个基本要素(类型+名称+值)
class Test{
public static void main(String []args){
int a=1;
int b=3;
b=89;
System.out.peintln(a);
System.out.println(b);
}
}
五.程序中“+”的使用
1.当左右两边都是数值型,做加法运算
2.当左右两边有一方为字符串,做拼接运算
3.运算顺序从左至右
eg.下面代码输出什么?
System.out.println(100+98);//198
System.out.println("100"+98);//10098
System.out.println(100+3+"hello");//103hello
System.out.println("hello"+100+3);//hello1003
六. 数据类型
1.整数类型
类型 | 存储空间 | 范围 |
---|---|---|
byte[字节] | 1字节 | -128~127 |
short[短整型] | 2字节 | -2^15~2^15-1 |
int[整型] | 4字节 | -2^31~2^31-1 |
long[长整型] | 8字节 | -2^63~2^63-1 |
细节注意:
1.整型常量默认int型,声明long类型常量需后加大写或小写的L,但int n=3L是错误的,空间减少,可能会有损失
2.bit是计算机中最小储存单位,byte是计算机中基本储存单元,1byte=8bit
2.浮点类型
类型 | 存储空间 | 范围 |
---|---|---|
单精度float | 4字节 | -3.403E38~3.403E38 |
双精度double | 8字节 | -1.798E308~1.798E308 |
细节注意:
1.浮点数在机器中存放形式,浮点数=符号位+指数位+位数位
2.尾数部分可能丢失,小数都是近似值
3.浮点型常量默认为double型,声明float型常量,须后加大写或小写f。
举几个例子 float n=1.1 //false
float n=1.1f //true
double n=1.1 //true
double n=1.1f //true
4.浮点型常量有两种表示形式
十进制数形式:如:5.12 512.0f .512
科学计数法形式:如:5.12e2 [5.12*10的2次方]
5.12E-2 [5.12/10的2次方]
5.double型比float型更精确
6.浮点数使用陷阱
eg.2.7和8.1/3进行比较
代码表示:double num1=2.7;
double num2=8.1/3; //2.7
System.out.println(num1); //2.7
System.out.println(num2); //接近2.7的一个小数,而不是2.7
//得到一个重要使用点:当我们对运算结果是小数的进行相等判断时,要小心,应当一两个数的差值的绝对值,在某个精度范围内判断
if(Math.abs(num1 - num2)<0.0001){
System.out.println("差值非常小,满足规定精度内");
}
ps.java API文档,直接索引法
API:应用程序编程接口
Java类的组织形式:
3.字符型
字符类型可以表示单个字符,字符类型是char,char是两个字节,可以存放汉字,多个字符使用字符串String
使用细节:
1.字符常量用单引号' '括起来
2.允许使用转义字符
3.char本质是一个整数,输出时是Unicode码对应的字符
//演示char的基本使用
public class char01{
//编写一个main方法
public static void main(String[] args){
char c1 = 'a';
char c2 = '\t';
char c3 = '轶';
char c4 = '97';//说明:字符型可以直接存放一个数字
System.out.println(c1);
System.out.println(c2);
System.out.println(c3);
System.out.println(c4);//当输出c4时,会输出97表示的字符a
//char类型可以进行运算,相当于一个整数,因为它都对应有Unicode码
System.out.println('a'+1);//107
//检测
char c5 = 'b'+1;//98+1=99
System.out.println((int)c5);//99
System.out.println(c5);//99对应的字符c
}
}
4.布尔类型
布尔类型也叫Boolean类型,其数据只允许取值true和false,无null,占一个字节,适用于逻辑运算if条件控制语句,while循环控制语句,do-while循环控制语句,for循环控制语句
//演示char的基本使用
public class char01{
//编写一个main方法
public static void main(String[] args){
boolean ispass = true;
if(ispass==true){
System.out.println("通过");
}
else{
System.out.println("不通过");
}
}
}
注意:不可以以0或非0的整数代替true or false,与C语言不同
七.数据类型转换
(一).自动类型转换
精度小的类型自动转换为精度大的类型
char-->int-->long-->float-->double
byte-->short-->int-->long-->float-->double
例:int a = 'c';//true,字符型可以自动转换为int
double d = 80;//true
注:
1.有多种类型的数据混合运算时,系统首先自动将所有的数据转换成容量最大的数据类型,然后再计算
例如:int n1 = 10;
float d1 = n1+1.1;//false,因为n1+1.1为double类型,高精度给了低精度
订正float d1 = n1+1.1f;//true
2.(byte,short)和(char)之间不会互相自动转换。
当把具体值赋给byte,先判断数的范围,在范围之内的话也可
例如:byte b1 = 10;//范围为-128 ~ 127,true
int n1 = 1;
byte b2 = n1;//false,若把变量赋值给byte,则判断类型,显然类型不一致
char c1 = b2;//false,byte不能转换成char
3.byte,short,char三者间可以计算,计算是首先转化为int型
例如:byte b2 = 1;
byte b3 = 2;
short s1 = 1;
short s2 = b2 + s1;//false
int s2 = b2 + s1;//true
byte b4 = b2 + b3;//false
int b4 = b2 + b3;//true
4.boolean不参与转换
5.自动提升原则:表达式的结果类型,自动提升为操作数中最大类型
(二).强制类型转换
自动类型转换的逆过程,将容量大的数据类型转化为小的,使用是要加强转符( ),可能造成精度降低或溢出,且强转符只针对最近的操作数有效,用小括号提升优先级。
(三).基本数据类型转为String字符串
语法:将基本类型的值 +" "即可
例如:int n1 = 100;
float n2 = 1.1f;
String str1= n1+" ";
String str2 = n2+" ";
(四).String字符串转为基本数据类型
语法:通过基本数据类型的包装类调用parseXX方法即可
例如:int n1 = Integer.parseInt("123");
double d1 = Double.praseDouble("123.1");
float f1 = Float.praseFloat("123.45");
System.out.println(s1.charAt(0));//解读:得到s1字符串中的第一个字符
在将String转换为基本类型是,要确保String类型可转换为有效数据,比如可将"123"转化为整数,但无法将"hello"转化为整数,此时会显示格式错误,会抛出异常
八.运算符
一种特殊符号,用于表示数据的运算,赋值和比较
(一).算术运算符
+,-,*,/,%(取余),++,--
前自增 | 先运算,后取值 | a=2;b=++a; | a=3;b=3; |
后自增 | 先取值,后运算 | a=2;b=a++; | a=3;b=2; |
前自减 | 先运算,后取值 | a=2;b=--a; | a=1;b=1; |
后自减 | 先取值,后运算 | a=2;b=a--; | a=1;b=2; |
//除法的使用
System.out.println(10 / 4);//数学中得2.5,而Java中得2
System.out.println(10.0 / 4);//得2.5
double d=10/4;
System.out.println(d);//只看10/4得2,但要把2赋值给double,变为得2.0
//%取余的使用:本质是a % b = a - a / b * b
System.out.println(10 % 3);//得1
System.out.println(-10 % 3);//得-1
System.out.println(10 % -3);//得1
System.out.println(-10 % -3);//得-1
//++自增若作为独立语句i++,++i均可以等价为:i=i+1
//++自增若作为表达式使用
int j = 8;
int k = ++j;//等价于j=j+1;k=j;先自增后赋值
System.out.println("k="+k+"j="+j);//得9,9
int k = j++;//等价于k=j;j=j+1;先赋值后自增
System.out.println("k="+k+"j="+j);//得8,9
//练习
int i=1;
i=i++;
System.out.println(i);//得1
/*解释:这里要使用临时变量
(1)temp=i;
(2)i=i++;
(3)i=temp;*/
int i=1;
i=++i;
System.out.println(i);//得2
/*解释:这里要使用临时变量
(1)i=i++;
(1)temp=i;
(3)i=temp;*/
(二).关系运算符(比较运算符)
结果均为boolean型,要么true,要么false,常用在if条件或循环条件中
==,!=,<,>,<=,>=,instanceof(检查是否是类的对象)
关系运算符组成的表达式称为关系表达式
(三).逻辑运算符
用于连接多个条件(多个关系表达式),最终结果也为boolean值
短路与&&,短路或||,取反!,逻辑与&,逻辑或|,逻辑异或^
a | b | a&b | a&&b | a|b | a||b | !a | a^b |
T | T | T | T | T | T | F | F |
T | F | F | F | T | T | F | T |
F | T | F | F | T | T | T | T |
F | F | F | F | F | F | T | F |
&&与&的使用区别
&&:若第一个条件为false,则第二个条件不会判断,结果为false
&:无论第一个条件是否为false,后面的条件仍会判断
||与|的使用区别
||:若第一个条件为true,则第二个条件不会判断,结果为true
|:无论第一个条件是否为true,后面的条件仍会判断
^异或: a^b,当a,b不同时,结果为true,否则为false
//练习
int x=5;
int y=5;
if(x++==6 & ++y==6){
x=11;
}
System.out.println("x="+x+"y="+y);//得6,6,若变为&&得6,5
int x=5;
int y=5;
if(x++==5 | ++y==5){
x=11;
}
System.out.println("x="+x+"y="+y);//得11,6,若变为||得11,5
boolean x=true;
boolean y=false;
short z=46;
if((z++==46)&&(y=true))z++;//注意这里y=true是赋值,结果为true
if((x==false)||(++z==49))z++;
System.out.println("z="+z);//得50
(四).赋值运算符
基本赋值运算符: =
复合赋值运算符: +=,-=,*=,/=
特点:1.运算顺序从右往左
2.赋值运算符左边只能为变量,右边可以为常量值,变量或表达式
3.复合运算符会进行类型转换
byte b=3;
b+=2;//按理上等价为b=b+2,实际上真正等价于b=(byte)b+2
(五).三元运算符
语法:条件表达式?表达式1:表达式2;
规则:若条件为true,结果为表达式1;若条件为false,结果为表达式2
int a=10;
int b=99;
int result = a>b ? a++:b--;
System.out.println("result="+result);//这里为先赋值后减法得99,若改为--b,则得98
//注意:表达式1,2要为可以赋值给接受变量的类型,或可以自动,强制转换
//三个数中选最大值
int max1=n1>n2?n1:n2;
int max2=max1>n3?max1:n3;
System.out.println("最大数="+max2);
//两句转一句
int max=(n1>n2?n1:n2)>n3?(n1>n2?n1:n2):n3;
System.out.println("最大数="+max);
(六).位移运算符
<<: 符号位不变,左移
>>: 符号位不变,右移
>>>: 无符号右移
举一个例子:1>>2其本质为1/2/2=0
1<<2的本质为1*2*2=4
(七)运算符优先级
按表格,优先级从上到下依次降低。
除单目运算符,赋值运算符从右向左运算外,其余均从左往右运算
. ( ) { } ; , | |
单目 | ++ -- ~ !(data type) |
算数 | * / % + - |
位移 | << >> >>> |
比较 | < > <= >= == != |
逻辑 | & ^ | && || |
三元 | ? : |
赋值 | = *= /= %= += -= <<= >>= >>>= &= ^= |= |
九.标识符
Java对各种变量,方法,类等命名时,使用的字符序列称为标识符
规则:(必须遵守)
- 由26个英文字母大小写,0~9,_或$组成
- 数字不可以开头,如:int 3ab=1;错误
- 不可以使用关键字和保留字,但能包含关键字和保留字
- 严格区分大小写,长度无限制
- 标识符不能包含空格
规范:
- 包名:多单词组成时,所有字母都小写,如aaa.bbb.ccc
- 类名,接口名:多单词组成时,所有单词的首字母大写,如XxxYyyZzz
- 变量名,方法名:多单词组成时,第一个单词首字母小写,第二个单词开始,每个单词的首字母大写,如xxxYyyZzz
- 常量名:所有字母都大写,多个单词间用_连接,如XXX_YYY_ZZZ
关键字和保留字:
关键字 | 定义数据类型 | class,interface,enum,byte,short,int,long, float,double,char,boolean,void |
定义数据类型值 | true,false,null | |
定义流程控制 | if,else,switch,case,default,while,do,for ,break,continue,return | |
定义访问权限修饰符 | private,protected,public | |
定义类,函数,变量修饰符 | abstract,final,static,synchronized | |
定义类与类间关系 | extends,implements | |
定义建立实例及引用实例,判断实例 | new,this,super,instanceof | |
定义异常处理 | try,catch,finally,throw,throws | |
定义包 | package,import | |
定义其他修饰符 | native,strictfp,transient,volatile,assert | |
保留字 | 现版Java未使用,以后可能作为关键字 | byValue,cast,future,generic,inner,operator, outer,rest,var,goto,const |
十.键盘输入语句
接受用户输入的数据,需要一个扫描器(对象)即Scanner
import java.util.Scanner;
public class input{
public static void main(String[ ] args){
Scanner myScanner = new Scanner(System.in);
System.out.println("请输入名字");
String name = myScanner.next();
System.out.println("请输入年龄");
int age = myScanner.nextInt();
System.out.println("请输入薪水");
double salary = myScanner.nextDouble();
System.out.println("以下为用户信息");
System.out.println("name="+name+"age="+age+"salary="+salary);
}
}
十一.进制
二进制:0~1,满2进1,以0b或0B开头
八进制:0~7,满8进1,以数字0开头
十进制:0~9,满10进1
十六进制:0~9及a(10)~F(15),满16进1,以0x或0X开头,a~f不区分大小写
十二.原码反码补码
- 二进制最高位为符号位,0为正数,1为负数
- 正数的原码,反码补码都一样
- 负数的反码等于原码符号位不变,其余位取反
- 0的反码补码都为0
- 负数的补码等于其反码加1
- Java没有无符号数
- 计算机都以补码的方式运算
- 看运算结果要看其原码