一.Java语言基础组成
Java由关键字,标识符,注释,常量和变量,运算符,语句,函数和数组组成
1.关键字(被java赋予特殊汉语的单词,其所有字母都是小写)
2.标识符(定义名称的,如类名,由26个英文字母大小写,0-9,下划线,$)
数字不可开头,不可使用关键字,
2.1,严格区分大小写
2.2.公司一般会通过“_”代表某一类名称例如:_temp
通过 分割主名称和子名称,例如TrafficLamp Red
3.注释
4.常量(不能改变的数值)
1.整数常量:所有整数
2.小数常量:所有小数
3.布尔常量:true,false
4.字符常量:将一个数字或者字母用单引号标志(''),如'a'
5.字符串常量:将一个或者多个字符用双引号("")标志。如"Hello world", "a",""(空字符串)
6.null常量:只有一个数值:null
进制(任何数据在计算机中都是以二进制的形式存在)进制越大,表现形式越小
计算器进行进制转换
计算器–查看–程序员
4.1-不同进制数据的表现
二进制-----0,1组成,以0b/0B开头
八进制-----0,1....7组成,以0开头
十进制-----0,1....9组成,整数默认是定制
十六进制 ---0,1..9,a,b,c,d,e,f(大小写均可),以0x开头
任意进制的转换(十进制转任意进制—- 除积倒取余)
十进制转二进制 (对十进制除以二运算) 然后从最后一位开始算比如余数0,1,1,二进制6=110
5-数据类型的概述和分类
数据类型—java是强类语言,对于每一种数据都定义了明确的具体数据类型
java中数据类型的分类(基本数据类型(4类8种) + 引用型数据类型)
基本数据类型
整数型:byte(1字节),short(2字节)int(4字节),long(8字节)
浮点型:float(4字节), double(8字节)
字符型:char(2字节)
boolean理论上是占八分之一个字节,因为一个开关就可以决定是true和false了,但是java中boolean类型没有明确指定他的大小
引用型数据类型(类(class),接口(interface), 数组([]))
常见错误:
1.变量定义一次后不能再重新定义一次
2.long l = 123456789123,整数默认为int类型,l超出int范围,会报错,即使赋值给long类型的白你两,由于常量赢超过int类型,同样报错,解决方法,在数值后面加"l",让编译器知道后面常量是long类型
3.float f=2.3,由于小数默认是double(8byte),赋值给float(4byte),可能会损失精度,不能通过编译器的审核,在数值后面加"f",让其知道后面的常量是float类型
4.初始化值问题。局部变量在使用之前必须赋值。一定要为变量y先赋值,再打印出来
5.作用域问题, 同一个区域不能使用相同的变量名
6.一条语句可以定义几个变量 int a,b,c...;
7.编程时,不能使用中文符号,将中文符号改为英文
类型转换
1.自动类型转换(int(4byte),当byte变量与其想加时候,首先会将byte类型自动转为int类型,再操作)
所有的byte,short,char值将被提升到int类型
如果一个操作数是long/float/double,计算结果为long/flaot/double
2.强制类型转换--需要把类型进行手动转换,否则无法正常使用
注意:如果超出了被赋值的数据类型的取值范围得到的结果会与你期望的结果不同
面试题:看下面的程序是否有问题,如果有问题,请指出并说明理由。
* byte b1 = 3;
* byte b2 = 4;
* byte b3 = b1 + b2;
* 从两方面去回答这个题
* b1和b2是两个变量,变量里面存储的值都是变化的,所以在程序运行中JVM是无法判断里面具体的值
* byte类型的变量在进行运算的时候,会自动类型提升为int类型
* byte b4 = 3 + 4;
* 3和4都是常量,java有常量优化机制,就是在编译的的时候直接把3和4的结果赋值给b4了
运算符
1.整数与整数相除,结果永远是整数,小数部分被忽略
2.负数对整数取模结果为负数,正数对负数取模结果为正数
3.加号可以作为连接符使用
a:单独使用: 放在操作数的前面和后面效果一样。(这种用法是我们比较常见的)
b:参与运算使用: 放在操作数的前面,先自增或者自减,然后再参与运算。
放在操作数的后面,先参与运算,再自增或者自减。
东哥视频代码:
class IfDemo
{
public static void main(String[] args)
{
int x = 1;
if(x>1)
{
System.out.println("yes");
}
else
{
System.out.println("a");
}
/*
if else 结构 简写格式: 变量 = (条件表达式)?表达式1:表达式2;
三元运算符:
好处:可以简化if else代码。
弊端:因为是一个运算符,所以运算完必须要有一个结果。
*/
int a = 9,b;
b = (a>1)?100:200;
if(a>1)
b = 100;
else
b = 200;
int n = 3;
if(n>1)
System.out.println("a");
else if(n>2)
System.out.println("b");
else if(n>3)
System.out.println("c");
else
System.out.println("d");
/*
if(n>1)
System.out.println("a");
if(n>2)
System.out.println("b");
if(n>3)
System.out.println("c");
else
System.out.println("d");
*/
System.out.println("over");
}
}
class IfTest
{
public static void main(String[] args)
{
//需求1:根据用户定义的数值不同。打印对应的星期英文。
/*
int num = 1;
if(num==1)
System.out.println("monday");
else if(num==2)
System.out.println("tsd");
else
System.out.println("nono");
*/
//需求2:根据用于指定月份,打印该月份所属的季节。
//3,4,5 春季 6,7,8 夏季 9,10,11 秋季 12, 1, 2 冬季
int x = 4;
if(x==3 || x==4 || x==5)
System.out.println(x+"春季");
else if(x==6 || x==7 || x==8)
System.out.println(x+"夏季");
else if(x==9 || x==10 || x==11)
System.out.println(x+"秋季");
else if(x==12 || x==1 || x==2)
System.out.println(x+"冬季");
else
System.out.println(x+"月份不存在");
if(x>12 || x<1)
System.out.println(x+"月份不存在");
else if(x>=3 && x<=5)
System.out.println(x+"春季");
else if(x>=6 && x<=8)
System.out.println(x+"夏季");
else if(x>=9 && x<=11)
System.out.println(x+"秋季");
else
System.out.println(x+"冬季");
}
}
class OperateDemo
{
public static void main(String[] args)
{
//int x = 4270;
//x = x /1000 * 1000;
//System.out.println(-1%5);
int a = 3,b;
//a++; //--> a = a+ 1;
b = ++a;
System.out.println("a="+a);
//字符串数据和任何数据使用+都是相连接,最终都会变成字符串。
//System.out.println("5+5"+(5+5));//"5+5=55"
/*
转义字符:通过\ 来转变后面字母或者符号的含义。
\n:换行。
\b:退格。相当于backspace。
\r:按下回车键。window系统,回车符是由两个字符来表示\r\n.
\t:制表符。相当于tab键。
*/
System.out.println("hello \t world");
//System.out.println("hello java");
System.out.println("\\hello\\");
char ch = '\'';
char c = 'a';
}
}
class OperateDemo2
{
public static void main(String[] args)
{
int x = 7;
//逻辑运算符用于连接boolean类型的表达式。
//x>3 & x<6 = true & true = true;
/*
true & true = true;
true & false = false;
false & true = false;
false & false = false;
& : 只要两边的boolean表达式结果,有一个为false。那么结果就是false。
只有两边都为true,结果为true。
*/
/*
true | true = true;
true | false = true;
false | true = true;
false | false = false;
| : 两边只要有一个为true,结果为true。
只有两边都有false,结果为false。
*/
/*
^ : 异或;就是和|有点不一样。当true ^ true = false;
true ^ true = false;
true ^ false = true;
false ^ true = true;
false ^ false = false;
^ : 两边相同结果是false。
两边不同结果是true。
*/
/*
!!true
*/
int a = 2;
//a>3 && a<6;
/*
&和&&的特点:
&:无论左边是true是false。右边都运算。
&&:当左边为false时,右边不运算
|:两边都参与运算。
||:当左边为true。右边不运算。
*/
System.out.println(false ^ false);
System.out.println(~6);
int n = 3,m = 8;
System.out.println("n=
class OperateDemo3
{
public static void main(String[] args)
{
//System.out.println(Integer.toBinaryString(60));
//System.out.println(Integer.toHexString(60));
int num = 26;
//获取60的最低4位,通过&15;
int n1 = num & 15;
System.out.println(n1>9?(char)(n1-10+'A'):n1);
//要获取下一组四位,将60右移4位。
int temp = num >>> 4;
//对temp的值进行最低四位的获取。
int n2 = temp & 15;
System.out.println(n2>9?(char)(n2-10+'A'):n2);
/*
0-9 'A' 'B' 'C' 'D' 'E' 'F'
65 66 67
10 11 12 13 14 15
12 - 10 = 2 + 'A' = (char)67;
*/
int x = 1,y;
y = (x>1)?'a':200;
System.out.println("y="+y);
}
}
class SwitchDemo
{
public static void main(String[] args)
{
int x = 3;
/*
switch(x)//byte short int char
{
default:
System.out.println("d");
//break;
case 4:
System.out.println("a");
//break;
case 6:
System.out.println("b");
break;
case 2:
System.out.println("c");
break;
}
*/
/*
int a=4,b =2;
char ch = '+';
switch(ch)
{
case '-':
System.out.println(a-b);
break;
case '+':
System.out.println(a+b);
break;
case '*':
System.out.println(a*b);
break;
case '/':
System.out.println(a/b);
break;
default:
System.out.println("feifa");
}
*/
System.out.println("Hello World!");
}
}
class SwitchTest
{
public static void main(String[] args)
{
//需求2:根据用于指定月份,打印该月份所属的季节。
//3,4,5 春季 6,7,8 夏季 9,10,11 秋季 12, 1, 2 冬季
int x = 4;
switch(x)
{
case 3:
case 4:
case 5:
System.out.println(x+"春季");
break;
case 6:
case 7:
case 8:
System.out.println(x+"夏季");
break;
case 9:
case 10:
case 11:
System.out.println(x+"秋季");
break;
case 12:
case 1:
case 2:
System.out.println(x+"冬季");
break;
default:
System.out.println("nono");
}
/*
if和switch语句很像。
具体什么场景下,应用哪个语句呢?
如果判断的具体数值不多,而是符合byte short int char这四种类型。
虽然两个语句都可以使用,建议使用swtich语句。因为效率稍高。
其他情况:对区间判断,对结果为boolean类型判断,使用if,if的使用范围更广。
*/
System.out.println("Hello World!");
}
}
class VarDemo
{
public static void main(String[] args)
{
/*
//定义变量的格式;
//数据类型 变量名 = 初始化值;
// 定义一个int类型变量.取值为4;
int x = 4;
System.out.println(x);
x = 10;
System.out.println(x);
//演示其他数据类型。
byte b = 2;//-128~127;
//byte b1 = 128;
short s = 30000;
long l = 4l;
float f = 2.3f;
double d = 34.56;
char ch = '4';
char ch1 = 'a';
char ch2 = '+';
char ch3 = ' ';
boolean bo = true;
boolean bo1 = false;
int a = 5;
a = a + 6;
*/
/*
什么时候定义变量?
当数据不确定的时候。需要对数据进行存储时。
就定义一个变量来完成存储动作。
*/
//类型的转换。
//byte b = 3;
//b = b + 2;
//System.out.println(b);
//System.out.println((char)5);
byte b = 3;
b = 3 + 4;
//b = b + 4;
System.out.println(b);
}
}