目录
1.Java主类结构
2.基础数据类型
1.整数类型
2.浮点类型
2.字符型(char)
3.布尔类型
3.变量与常量
Java运算符
1.赋值运算符
2.算术运算符
3. 自增和自减运算符
4.比较运算符
5.逻辑运算符
6.位运算符
7.三元运算符
8.运算符优先级
数据类型转换
1.隐式类型转换
Java语言是面向对象的程序设计语言,Java程序的基本组成单元是类,类体中又包括属性与方法两部分每一个应用程序都必须包含一个main()方法,含有main()方法的类称为主类。
创建主类并调用其主方法
在Eclipse下依次创建项目item、包Number和类Frist。在类体中输入以下代码,实现在控制台上输出“你好 Java”。
运算结果如下:
public class Frisit {
static String s1 = "你好";
public static void main(String[] args) {
// TODO Auto-generated method stub
String s2 = "Java";
System.out.println(s1);
System.out.println(s2);
}
}
在Java中有8种基本类型来存储数值、字符和布尔值,分为:数据型,字符型,布尔型。数据型又分为整数类型和浮点类型
整数类型:byte、short、int、long
浮点类型:float、double
整数类型简称整型,用来存储整数数值,即没有小数部分的数值。可以是正数,也可以是负数。整型数据根据它所占内存大小的不同,可分为byte、short、int和long4种类型。它们具有不同的取值范围。long型需要在整数后面加L或者l(小写L);float型则需要在小数后面添加F或f
浮点类型简称浮点型,用来存储含有小数部分的数值。Java语言中浮点类型分为单精度浮点型类(float)和双精度浮点类型(double),它们具有不同的取值范围。
创建BMIexponent 类,声明 double 型变量 height 来记录身高,单位为米;声明 int 型变量weigh记录体重,单位为千克;根据 BMI=体重/(身高x身高)计算 BMI 指数。实例代码如下:
public class BMIexponent {
public static void main(String[] args) {
// TODO Auto-generated method stub
double height = 1.70;//定义一个double变量,变量名为height,值为1.70
int weight = 70;//定义一个int变量weight并赋值为70
double exponent = weight/(height*height);//定义一个double变量exponent,并赋予公式计算结果
System.out.println("你的身高为:"+height);//输出您的身高
System.out.println("你的体重为:"+weight);//输出体重
System.out.println("你的BMI指数为"+ exponent);//输出BMI指数
System.out.println("你的体重属于:");//输出体重类型
if (exponent<18.5) {//判断BMI指数是否小于18.5
System.out.println("体重过轻");//输出结果
}
if (exponent>=18.5&& exponent<24.9) {//判断BMI指数是否大于等于18.5
System.out.println("正常范围");//输出结果
}
if (exponent>=24.9&& exponent<29.9) {//判断BMI指数是否大于等于24.9
System.out.println("体重过重");//输出结果
}
if (exponent>=29.9) {//判断BMI指数是否大于29.9
System.out.println("肥胖");//输出结果
}
}
运行结果如下:
用于存储单个字符,占用16位(两个字节)的内存空间。在定义字符型变量时,要以单引号表示,如's'表示一个字符。
查看字符与Unicode码互转的结果
在项目中创建类Gess,编写如下代码,将Unicode表中某些位置上的字符以及一些字符在 Unicode表中的位置在控制台上输出。
public class Gess {//定义类
public static void main(String[] args) {//主方法
// TODO Auto-generated method stub
char word = 'd',word2 = '@';//定义char型变量
int p = 23045,p2 = 45213;//定义int型变量
System.out.println("d在Unicode表中的顺序位置是:"+(int)word);
System.out.println("@在Unicode表中的顺序位置是:"+(int)word2);
System.out.println("Unicode表中的第23045位是:"+(char)p);
System.out.println("Unicode表中的第45213位是:"+(char)p2);
}
}
运行结果如下:
3.转义字符是一种特殊的字符变量,它以反斜杠“\”开头,后跟一个或多个字符。将转义字符赋值给字符变量时,与字符常量值一样需要使用单引号
输出‘\'字符和'*'字符
'\'字符的转移字符'\\','*'字符的Unicode码为2605,实例代码如下
public class Demo {
public static void main(String[] args) {
// TODO Auto-generated method stub
char c1 = '\\';//定义一个char类型的变量,变量名为c1,值为'\\'
char char1 = '\u2605';//定义一个char类型的变量,变量名为char1,值为'\u2605'
System.out.print(c1);//输出c1运行结果
System.out.print(char1);//输出char1运行结果/
}
}
运行结果如下:
布尔类型只有true和false两个值,分别代表布尔逻辑中的“真” 和“假”,用作判断条件,给boolean型变量赋初值赋小写true或false,不会报错,但是如果用大写如TRUE或FALSE就会报错,那么可以在大写的前面加第一个字母为大写的Boolean,则不会报错,大写的Boolean和小写boolean的包装类。
public class TrueOrFalse {
public static void main(String[] args) {
// TODO Auto-generated method stub
boolean b1 = true;//定义一个boolean类型的变量b1,将true赋值给b1
boolean b2 = Boolean.FALSE;//定义一个boolean类型的变量b2,将Boolean.FALSE赋值给b2
System.out.println(b1);//输出b1运行结果
System.out.print(b2);//输出b2运行结果
}
}
运行结果如下:
其值能被改变的量称为变量。变量与常量的命名都必须使用合法的标识符。
标识符
标识符可以简单的理解为一个名字,是用来标识类名、变量名、方法名、数组名、文件名的有效字符序列。
标识符由任意顺序的字母、下划线(-)、美元符号($)、和数字组成。注:不能以数字开头;标识符要避开关键字;变量名中不能有斜杠。
尝试给常量赋值,观察是否会发生错误
在项目中创建类Part,在类体中创建变量age与常量PI。在主方法中分别将变量与常量赋值,通过输出信息可测试变量于常量的有效范围。
public class Part {
static int age=20;//定义一个int变量,名为age,赋值为20
static final double PI=3.14;//定义一个double型变量,名为PI,赋值为3.14
public static void main(String[] args) {
// TODO Auto-generated method stub
final int number;//定义一个int变量,名为number,在前面加一个final就变成了常量
number=1235;//给它赋值
age=22;//再次对变量进行赋值
munbe=1456;//错误代码,number为常量,只能赋值一次
System.out.println(number);//输出
System.out.println(age);//输出
System.out.println(PI);//输出
}
}
运行结果如下:
变量的有效范围
变量的有效范围是指程序代码能够访问该变量的区域,若超出该区域,则在编译时会出现错误。在程序中,一般会根据变量的”有效范围“将变量分为”成员变量“和”局部变量“。
成员变量
在类体中所声明的变量被称为成员变量,成员变量在整个类中都有效。
局部变量
在类的方法体中声明的变量(方法内部定义,”{“与”}“之间的代码中声明的变量)称为局部变量。局部变量只在当前代码块中有效,也就是只能在”{“与”}“之内使用。
变量的有效范围如下图所示:
使用赋值运算符同时为两个变量赋值
public class Eval {
public static void main(String[] args) {
// TODO Auto-generated method stub
int a, b, c ;//定义三个int型变量a,b,c
a =15;//定义三个int型变量a,b,c
b = a + 4;
c = b;
c = b = a + 4;//把变量a与4的和赋值给变量b,然后再赋值给变量c
出现两个等号从右往左运算
System.out.println("c值为:"+c);//输出变量c的值
System.out.println("b值为:"+b);//输出变量b的值
}
}
运行结果如下:
Java中的算术运算符主要有+(加)、-(减)、*(乘)、/(除)、%(求余),他们都是二次元运算符,
Java中算术运算符的功能及使用方式如表:
使用算术运算符模拟计算器
创建ArithmeticOperator类,让用户输入两个数字,分别用5种运算符对着两个数字进行计算
import java.util.Scanner;
public class ArithmeticOperator {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);//创建扫描器,获取控制台输入的值
System.out.println("请输入两个数字,用空格隔开(mun1 mun2):");//输入运行提示
double num1 = sc.nextDouble();//记录输入的数字num1
double num2 = sc.nextDouble();//记录输入的数字num2
System.out.println("num1+num2的和为:"+(num1 + num2));//输出记录的两数的和
System.out.println("num1-num2的差为:"+(num1 - num2));//输出记录的两数的差
System.out.println("num1*num2的积为:"+(num1 * num2));//输出记录的两数的积
System.out.println("num1/num2的商为:"+(num1 / num2));//输出记录的两数的商
System.out.println("num1%num2的余数为:"+(num1 % num2));//输出记录两数的余数
sc.close();//关闭扫描器
}
}
运行结果如下:输入23 15
++a:先运算后使用
a++:先使用后计算
使用不同的比较运算符判断两个整数的关系
public class Compare {//创建类
public static void main(String[] args) {
// TODO Auto-generated method stub
int number1 = 4;//声明int型变量number1
int number2 = 5;//声明int型变量number2
//依次将变量number1与number2的比较结果输出
System.out.println("number1>number2 的返回值为:"+(number1>number2));
System.out.println("number1=number2 的返回值为:"+(number1>=number2));
System.out.println("number1<=number2 的返回值为:"+(number1<=number2));
}
}
运行结果如下:
&&、&:与
||:或
!:非
&&:两者都为真,结果就为真
true&&true==true true&&false==false false&&false==false
||:只要有一者为真,结果就是真
true||true==true true||false==true false||false==false
| :非真即假非假即真
|true==false |false==true
使用不同的比较运算符判断两个整数的关系:
public class Calculation {
public static void main(String[] args) {
// TODO Auto-generated method stub
int boys = 15;//男生人数
int girls = 17;//女生人数
int totle = boys + girls;//总人数
boolean result1 = ((boys > girls)&&(totle>30));//男生人数多于女生,且总人数大于30
boolean result2 = ((boys > girls)||(totle>30));//男生人数多于女生,或总人数大于30
System.out.println("男生人数大于女生人数并且人数大于30人:"+result1);//结果输出
System.out.println("男生人数大于女生人数或者人数大于30人:"+result2);
}
}
运算结果如下:
左边最高位是符号位,最高位是0表示正数,若为1则表示负数,负数采用补码表示
&(按位与):
>>>两者都为1,结果才是1
|(按位或):
0变1,1变0
^(按位异域)
:两者相同即为0,不同则为1
~(按位取反)
:0变1,1变0
移位操作
<<,左移
:整体左移空位补0,溢出去掉
>>,右移
整体右移,正数补0,负数补1,溢出去掉
>>>无符号右移
整体右移,空位补0,负数补1,溢出去掉
三元运算符的使用格式:
条件式? 值1:值2
自动类型转换:一定不会丢失数据
强制类型转化:有可能会丢失数据
使用隐式转换提升数值的精度
public class Conver {
public static void main(String[] args) {
// TODO Auto-generated method stub
byte mybyte = 127;//定义byte型变量mybyte,并把允许的最大值赋予给mybyte
int myint = 150;//定义int型变量myint,并赋值150
float myfloat =452.12f;//定义float型变量myfloat,并赋值
char mychar = 10;//定义char型变量mychar,并赋值
double mydouble = 45.46546;//定义double型变量,并赋值
//将运算结果输出
System.out.println("byte型与float型数据进行运算结果为:"+(mybyte + myfloat));
System.out.println("byte型与int型数据进行运算结果为:"+(mybyte * myint));
System.out.println("byte型与char型数据进行运算结果为:"+(mybyte / mychar));
System.out.println("double型与char型数据进行运算结果为:"+(mydouble + mychar));
}
}
运行结果如下: