Java程序基本组成单元是类,类体中又包含属性与方法两部分
每一个应用程序都必须包含一个main()方法,含有main()方法的类称为主类。
public class Number {
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);
/*定义一个变量s1,值为你好
* 定义变量s2,值为Java
* 输出s1的值
* 输出s2的值
*/
}
}
分为:数值型,字符型,布尔型。
数值型又分为整数类型和浮点类型。
整数类型简称整型,用来储存整数数值,即没有小数部分的数值。也可以是正数,也可以是负数。
整型数据根据它所占内存大小的不同,可分为byte、short、int和long4种类型。
它们具有不同的取值范围
浮点类型简称浮点型,用来存储含有小数部分的数值。Java语言中浮点类型分为单精度浮点类型
(float)和双精度浮点类型(double),它们具有不同的取值范围。
long 型属于高精度数据类型,所以需要在整数后边加L或者l。
float型小数则需要在小数后边添加F或f。
运用double型变量height来记录身高,单位为米;
int型变量weight记录体重,单位千克;
根据BMI=体重/(身高x身高)计算BMI指数:
public class BMIexponent {
public static void main(String[] args) {
// TODO Auto-generated method stub
double height=1.50;//定义double型变量,身高变量,单位:米
int weight=43;//定义一个变量,单位:千克
double exponent=weight/(height*height);//定义变量赋予BMI计算公式
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指数是否小于24.9
System.out.println("正常范围");//输出
}
if(exponent>=24.9&&exponent<29.9) {//判断BMI指数是否小于29.9
System.out.println("体重过重");//输出
}
if(exponent>=29.9) {//判断BMI指数是否大于29.9
System.out.println("肥胖");//输出
/*定义double型变量,身高变量,单位:米
* 定义一个变量,单位:千克
* 定义变量赋予BMI计算公式
* 输出身高
* 输出体重
* 输出BMI指数
* 输出体重类型
* 判断BMI指数是否小于18.5
* 输出结果小于18.5(体重过轻)
* 判断BMI指数是否小于24.9
* 输出结果小于24.9属于正常范围
* 判断BMI指数是否小于29.9
* 输出结果小于29.9(体重过重)
* 判断BMI指数是否大于29.9
* 输出结果大于29.9(肥胖)
*/
}
}
}
char
字符类型(char)用来存储单个字符,占用16位(两个字节)的内存空间。在定义字符型变量时,要以单引号表示,如's'表示一个字符。但是"s"则表示一个字符串,虽然只有一个字符,但由于使用双引号,它仍然表示字符串,而不是字符。
public class Gess {
public static void main(String[] args) {
// TODO Auto-generated method stub
char word='d',word2='@';
int p=23045,p2=45213;
System.out.println("d在Unicode表中的顺序位置是:"+(int)word);
System.out.println("d在Unicode表中的顺序位置:"+(int)word2);
System.out.println("Unicode表中的第23045位是:"+(char)p);
System.out.println("Unicode表中的第45213位是:"+(char)p2);
/*定义char型变量word和word2,赋值d和@
* 定义int型变量p和p2,赋值23045,45213
* 输出Word结果
* 输出Word2结果
* 输出p结果
* 输出p2结果
*/
}
}
转义字符
转义字符是一个特殊字符变量,以反斜杠“\”开头,后跟一个或多个字符
例如printf函数的格式串中用到的"\n"就是一个转义字符意思是“回车换行”
public class Dome {
public static void main(String[] args) {
// TODO Auto-generated method stub
char c1='\\';//定义一个char类型的变量,变量名为c1,值为'\\'
char char1='\u2605';//定义一个char类型的变量,变量名为char1,值为'\u2605'
System.out.println(c1);//输出c1结果
System.out.println(char1);//输出char1结果
/*定义一个char类型的变量,变量名为c1,值为'\\'
* 定义一个char类型的变量,变量名为char1,值为'\u2605'
* 输出c1结果
* 输出char1结果
*/
}
}
布尔类型又称逻辑类型,简称布尔型,通过关键字boolean来定义布尔类型变量。
布尔类型只有true和false两个值,分别代表布尔逻辑中的"真"和"假"。布尔值不能和整数类型进行转换。布尔类型通常被用在流程控制中。给boolean型变量赋值小写true或false,不会报错,但是用大写的TRUE或FALSE就会报错,则在前面加大写的Boolean就不会报错。
在程序执行过程中,其值不能被改变的量称之为常量,其值能改变的量称为变量。变量与常量的命名都必须使用合法的标识符。
标识符:
标识符可以理解为一个名字,作用:用来标识类名,变量名,方法名,数组名,文件名的有效字符序列。
Java语言规定标识符由任意顺序的字母,下划线(_),美元符号($),和数字组成,并且第一个字符不可以是数字。标识符不能是Java中的关键字
合法标识符:
name
user_age
$page
非法标识符:
4word
string
User name
标识符中的字母严格区分大小写如:good和Good是不同的两个标识符
关键字
程序所打出的代码中显示器所显示的所有彩色字符都是关键字。
声明变量就是要告诉编译器这个变量的数据类型,这样编译器才知道需要配置多少空间给它。
变量命名应遵循以下规则:
变量名必须是一个有效的标识符
变量名不可以使用Java中的关键字
变量名不能重复
应选择有意义的单词作为变量名
在程序运行过程中一直不会改变的量称为常量,也被称为final变量。
常量在整个程序中只能被赋予一次值。
public class Prat {
static int age=24;
static final double PI=3.14;
public static void main(String[] args) {
// TODO Auto-generated method stub
final int number;
number=12345;
age=44;
number=66666;
System.out.println(number);
System.out.println(age);
System.out.println(PI);
/*声明int型变量age并赋值
* 声明常量PI并赋值
* 声明int型常量number
* 对常量赋值
* 再次对变量进行赋值
* 错误代码,number为常量,只能赋值一次
* 输出number的值
* 输出age的值
* 输出PI的值
*/
}
}
在程序中,一般会根据变量的"有效范围"将变量分为"成员变量"和"局部变量"。
成员变量
在类体中所声明的变量被称为成员变量,在整个类中都有效
局部变量
在类的方法体中声明的变量只在当前代码块中有效
public class Val {
static int times=3;
public static void main(String[] args) {
// TODO Auto-generated method stub
int times=4;
System.out.println("times的值为:"+times);
/*定义成员变量time
* 定义局部变量time
* 输出time的值
* 要是将(val.)加在+times之间输出结果为3
*/
}
}
赋值运算符以符号"="表示,它是一个二元运算符(对两个数做处理),其功能是将右方操作数所含的值赋给左方的操作数。
例如:int a=100; //将100的值赋值给a;
public class Eval {
public static void main(String[] args) {
// TODO Auto-generated method stub
int a,b,c;
a=15;
c=b=a+4;
System.out.println("c值为:"+c);
System.out.println("b值为:"+b);
/*声明int型变量a,b,c
* 给变量a赋值15
* 将a与4的和赋值给变量b,然后再赋值给变量c
* 输出变量c的值
* 输出变量b的值
*/
}
}
Java中的算数运算符主要有+(加),-(减),*(乘),/(除),%(求余)其中+和-还可以作为正负号使用
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("请输入两个数字,用空格隔开(num1 num2):");
double num1=sc.nextDouble();
double num2=sc.nextDouble();
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();
/*创建扫描器,获取控制台输入的值
* 输入所需提升
* 获取double数据,记录输入的第一个数字
* 再次获取,记录输入的第二个数字
* 计算两数之和
* 计算差
* 计算乘
* 计算除
* 计算余数
* 关闭扫描器
*/
}
}
符号在前先运算后使用,符号在后先使用后运算
放在操作元前面的自增自减运算符,会先将变量值加1或减1再参与表达式的运算。
++a(--a)//先算后用
a++(a--)//先用后算
比较运算符的结果是boolean型,运算结果不是true就是false。
public class Compare {
public static void main(String[] args) {
// TODO Auto-generated method stub
int number1=4;
int number2=5;
System.out.println("unmber1>number2的返回值为:"+(number1>number2));
System.out.println("unmber1=number2的返回值为:"+(number1>=number2));
System.out.println("unmber1<=number2的返回值为:"+(number1<=number2));
/*声明int型变量number1
* 声明int型变量number2
* 输出number1是否>number2的结果
* 输出number1是否=number2的结果
* 输出number1是否<=number2的结果
*/
}
}
逻辑运算符包括:&(&&)(逻辑与)、||(逻辑或)、!(逻辑非)
逻辑运算符的操作元必须是Boolean型数据。
两者都为真结果才是真
只要有一者为真结果就是真
非真即假,非假即真
当第一个表达式为false时则不会去判断第二个表示式,直接输出结果,通常将这种在逻辑运算中从左端可推出整个表达式值的情况称为“短路”
而那些始终需要执行逻辑运算符两边的表达式才可以推断出整个值的称为“非短路”
public class Calcuation {
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));
boolean result2=((boys>girls)||(totle>30));
System.out.println("男生人数大于女生人数并且总人数大于30人:"+result1);
System.out.println("男生人数大于女生人数或者总人数大于30人:"+result2);
/*男生人数
* 女生人数
* 总人数
* 使用逻辑运算符来判断男生人数大于女生人数并且总人数大于30人
* 使用逻辑运算符来判断男生人数大于女生人数或者总人数大于30人
* 最后输出结果
*/
}
}
三元运算符的运算规则为:若条件式的值为true,则整个表达式取值1,否则取值2。
语法:返回值=判断公式 ? 结果1 : 结果2
返回公式是true是结果1,是false则取结果2
类型转换是将一个值从一种类型更改为另一种类型的过程。
低精度数据类型转高精度数据类型永远不会溢出,总是成功的。称隐式\自动类型转换 一定不会丢失数据
把高精度转向低精度时则会信息丢失,有可能失败。称显示\强制类型转换 有可能会丢失数据
这些类型按精度从低到高排序为byte 将高精度数字转低精度数字时在int a=45.23;时会出现错误这时我们就得在数字前面加上“(int)”这时就不会报错了。
public class Conver {
public static void main(String[] args) {
// TODO Auto-generated method stub
byte mybyte=127;
int myint=150;
float myfloat=123.87f;
char mychar=10;
double mydouble=23.87544;
System.out.println("byte型与float型数据进行运算结果为:"+mybyte+myfloat);
System.out.println("byte型与int型数据进行运算结果为:"+mybyte*myint);
System.out.println("byte型与char型数据进行运算结果为:"+mybyte/mychar);
System.out.println("douler型与char型数据进行运算结果为:"+mydouble+mychar);
/*定义byte型变量mybyte,赋值
* 定义int型变量并赋值
* 定义float型变量并赋值
* 定义char型变量并赋值
* 定义double型变量并赋值
* 输出运算结果
*/
}
}