java主类结构
java语言是面向对象的程序设计语言,Java 程序的基本组成单元是类,类体中又包括属性与方法两部分。 每一个应用程序都必须包含个maino方法,含有main(方法的类称为主类)。
编写主方法
main() 方法是类体中的主方法 以“{ ” 开始 以“}” 结束
public 权限修饰符
static 静态修饰符
void 返回值修饰符
例:Eclipse下依次创建项目item,包Number和类Frist。 在 类体中输入以下代码,实现在控制台上输出“你好Java"。
java
public class First {
static String s1 = "你好"; // 类的属性称为全局变量 (成员变量) 要加一个static
public static void main(String[] args) {
String s2 = "Java"; //方法中的属性称为局部变量
System.out.println(s1);
System.out.println(s2);
}
}
1.2 基本数据类型
基本数据类型(primitive data type) 最基础的数据类型 八种
整数型 byte short int long
浮点型 float double 小数
字符型 char
布尔型 boolean true false 做逻辑判断
1.2.1 整数类型
byte short int long
![](https://i-blog.csdnimg.cn/blog_migrate/619dacd25e281ca313392c305d0fc180.png)
public class TestVar05{
public static void main(String[] args){
//定义整数类型的变量:
//给变量赋值的时候,值可以为不同进制的:
int num1 = 12 ;//默认情况下赋值就是十进制的情况
System.out.println(num1);
int num2 = 012;//前面加上0,这个值就是八进制的
System.out.println(num2);
int num3 = 0x12;//前面加上0x或者0X,这个值就是十六进制的
System.out.println(num3);
int num4 = 0b10;//前面加上0B或者0B,这个值就是二进制的
System.out.println(num4);
//定义byte类型的变量:
byte b = 126;//定义了一个byte类型的变量,名字叫b,赋值为12
System.out.println(b);
//注意:超范围的赋值会报错。
short s = 30000;
System.out.println(s);
int i = 1234;
System.out.println(i);
//整数类型默认就是int类型的,所以12345678910是一个int类型的数,对于int类型来说,它超出范围了
//要想把一个数给long类型变量,那么后面加上L(推荐)或者l就可以了
long num5 = 12345678910L;
System.out.println(num5);
//注意:只有这个数超出int类型的范围了后面才需要加上L,否则无需加L也可以赋值给long类型:
long num6 = 12;
System.out.println(num6);
}
}
1.2.2 浮点类型
浮点类型简称浮点型,用来存储含有小数部分的数值。Java语言中浮点类型分为单精度浮点类型(float)和双精度浮点类型(double),他们具有不同的取值范围。
![](https://i-blog.csdnimg.cn/blog_migrate/280341644922b0d1b66613a7c3ec53be.png)
创建BMIexponent类,声明double型变量height来记录身高,单位为米;声明int型变量weight记录体重,单位为千克;根据BMI=体重/(身高X身高)计算BMI指数。实现代码如下:
public class BMIcc {
public static void main(String[] args) {
// TODO Auto-generated method stub
double height = 1.72;//身高变量
int weight =70;//体重变量
double exponent =weight/(height*height);//BMI计算公式
System.out.println("您的身高:"+height);
System.out.println("您的体重为:"+weight);
System.out.println("您的BMI指数为:"+exponent);
System.out.println("您的体重属于:");
if(exponent<18.5) {//判断BMI指数是否小于18.5
System.out.println("体重过轻");
}
if(exponent>=18.5&&exponent<24.9){//判断BMI指数是否在18.5到24.9之间
System.out.println("正常范围");
}
if(exponent>=24.9&&exponent<29.9){//判断BMI指数是否在24.9到29.9之间
System.out.println("体重过重");
}
if(exponent>=29.9) { //判断指数是否大于29.9
System.out.println("肥胖");
}
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/880cdafe76ea272825a8eced2941a1e0.png)
1.2.3 字符类型
Java中使用单引号来表示字符常量,字符型在内存中占2个字节。
char 类型用来表示在Unicode编码表中的字符。Unicode编码被设计用来处理各种语言的文字,它占2个字节,可允许有65536个字符。
转义字符
转义字符是一种特殊的字符变量,其以反斜杠“\”开头, 后跟一个或多个字符。转义子付具有
特定的含义,不同于字符原有的意义,故称“转义”。
![](https://i-blog.csdnimg.cn/blog_migrate/5df50aaa40d68119ed75e223f45f97bc.jpeg)
package chen;
public class Chey {
public static void main(String[] args) {
// TODO Auto-generated method stub
char c1='\\';//将转义字符‘\\’赋值给变量c1
char char2='\u2605';//将转义字符赋值给变量char2
System.out.println(c1);//输出结果\
System.out.println(char2);//输出结果
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/776dcfd7618c29aca09c391f0b3e73c9.png)
1.2.4 布尔类型
布尔类型又称逻辑类型,只有true和false两个值,分别代表布尔逻辑中的“真”和“假”。布尔值不能与整数类型进行转换。布尔类型通常被用在流程控制中作为判断条件。
通过关键字boolean 来声明布尔类型变量。
public static void main(String[] args) {
// TODO Auto-generated method stub
char c1='\\';//将转义字符‘\\’赋值给变量c1
char c2='\u2605';//将转义字符赋值给变量c2
System.out.println(c1);//输出结果
System.out.println(c2);
boolean b=true;//定义布尔型变量b,并赋值给ture
boolean b2=Boolean.FALSE;
System.out.println(b);
System.out.println(b2);//
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/245d18aad5a62fe4fcb73df2257dbeef.png)
变量与常量
在程序执行过程中,其值能被改变的量称为变量,其值不能被改变的量称为常量。变量与常量的命名都必须使用合法的标识符。将向读者介绍标识符与关键字、变量与常量的声明。
2.2 标识符与关键字
Java语言规定标识符由任意顺序的字母,下划线,美元符号和数字组成,并且第一个字符不能是数字标识符,不能是Java中的保留关键字
(1)类名:通常使用名词,第一个单词字母必须大写,后续单词首字母大写。
(2)方法名:通常使用动词,第一个单词首字母小写,后续单词首字母大写。
(3)变量:第一个单词首字母小写,后续单词首字母大写。
(4)常量:所有字母均大写。
(5)单词的拼接:通常使用"userLastName"方式拼接来单词,而不是"user_last_name"。
关键字是Java语言中已经被赋予特定意义的一些单词,不可以把这些字作为标识符来使用。简单理解为凡是在Eclipse 变成红色粗体的单词,都是关键字。
2.3 声明变量
变量的使用是程序设计中一个十分重要的环节。要告诉编译器这个变量是属于哪一种数据类型,这样编译器才知道需要配置多少空间给它,以及它能存放什么样的数据。在程序运行过程中,空间内的值是变化的,这个内存空间就称为变量。为了便于操作,给这段空间取个名字,就是我们声明的变量名。内存空间内的值就是变量值。在声明变量时可
以没有赋值,也可以直接赋给初值。
对于变量的命名并不是任意的,应遵循以下几条规则:
(1)变量名必须是一个有效的标识符。
(2)变量名不可以使用 Java 中的关键字。
(3)变量名不能重复。
(4)应选择有意义的单词作为变量名。
常量
在程序运行过程中,一直不会改变的量称为常量,通常也被称为“final 变量” ,常量名通常使用大写字母,但这并不是必须的,很多Java程序员使用大写字母表示常量,是为了清楚的表明正在使用常量
尝试给常量赋值,观查是否发生错误。
public class Bian {
//声明常量 PI,此时如不对PI进行赋值,则会出现错误提示
static final double PI = 3.14;
static int age = 23; //声明int 型变量 age并进行赋值
public static void main(String[] args) {//主方法
final int number; //声明 int 型常量 number
number=1235; //对常量进行赋值
age =22; //再次对变量进行赋值
number=1236; //错误代码,number为常量,只能赋值一次
System.out.println("常量PI的值为:"+P/); //将 PI 的值输出
System.out.println("赋值后number的值为:"+number);//将number的值输出
System.out.println("int 型变量age的值为:"+age);//将number的值输出
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/d47a314990d736782aaca964590f9d1c.png)
变量
定义:变量的有效范围是指程序代码能够访问该变量的区域,若超出变量所在的区域访问变量则编译时会出现错误.在程序中,一般会根据变量能够访问的区域将变量分为"成员变量"和局部变量.
成员变量:在类体中所声明的变量被称为成员变量,成员变量在整个类中都有效。
局部变量:只能在当前代码块中有效,局部变量与成员变量名相同时,成员变量被隐藏暂时失效,运行结果就会取就近原则
运算符
运算符是一些特殊的符号,主要用于数学函数、一些类型的赋值语句和逻辑比较方面。Java中提供了丰富的运算符,如赋值运算符、算术运算符和比较运算符等
2.4.1 赋值运算符
赋值运算符以符号“=”表示,它是一个双目运算符(又对两个操作数做处理),其功能是将右边操作数所含的值赋给左边的操作数。例如:
inta=100; //该表达式是将100赋值给变量a
左边的操作数必须是一个量,而右边的操作数则可以是变量(如 a、number)、常量(如 123、'book)、有效的表达式(如45*12)
public class Fuzhi {
public static void main(String[] args) {
// TODO Auto-generated method stub
int a,b,c; //声明int变量a,b,c
a = 15; //将15赋值给a
c = a; //将a的值赋给c
b = a + 4; //将a与4的和赋值给变量b,然后给c
c = b; //将c的值赋给b
System.out.println("c值为: "+c);
System.out.println("b值为:"+b);
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/db1bec1d24c950ab5a32368d4a92d4d4.png)
2.4.2 算术运算符
Java中的算术运算符主要有+(加号)、-(减号)、*(乘号)、/(除号)、%(求余),它们都是双目运算符。
package kt38;
import java.util.Scanner;
public class kn38 {
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();//关闭扫描器
}
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/806c94b8165c40825fa1f6079e01feee.png)
2.4.3 自增和自减运算符
自增和自减运算符是单目运算符,可以放在变量之前,也可以放在变量之后。自增和自减运算符的作用是使变量的值增1或减1.
a++; ++a a--; --a
符合在前 ++i --i 先计算后使用
符合在后 i++ i-- 先使用后计算
public static void main(String[] args) {//主函数
// TODO 自动生成的方法存根
int a =1;//创整型量初始值为1
System.out.println("a="+a);//输出此时a的值
a++; // a自增+1
System.out.println("a++="+a);//输出此时a的值
a++; // a自增+1
System.out.println("a++="+a);// 输出此时a的值
a++; //a自增+1
System.out.println("a++="+a);// 输出此时a的值
a--; //a自减-1
System.out.println("a--="+a);// 输出此时a的值
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/95b212663ad4352c56126eb519bb5cf1.png)
2.4.4 关系运算符
关系运算符属于双目运算符,用来判断一个操作数与另外一个操作数之间的关系。关系运算符的计算结果都是布尔类型的。
![](https://i-blog.csdnimg.cn/blog_migrate/fc47540e5f8526a7af6a7533d8ebc94c.png)
public static void main(String[] args) {//主函数
int num1 =4,num2=7; //声明int型变量num1,并赋值4,声明int型变量num2,并赋值7
int num3 =7; //声明int型变量num3,并赋值7
System.out.println("numl<num2 的结果:"+(num1 < num2)); //输出numl<num2 的结果的值
System.out.println("numl>num2 的结果:"+(num1 > num2)); //输出numl>num2 的结果的值
System.out.println("num1==num2的结果:"+(num1 ==num2));//输出numl==num2 的结果的值
System.out.println("numl!=num2 的结果:"+(num1 != num2));//输出numl!=num2 的结果的值
System.out.println("numl<=num2的结果:"+(num1 <= num2));//输出numl<=num2 的结果的值
System.out.println("num2>=num3的结果:"+(num2>= num3));//输出numl>=num2 的结果的值
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/0e30cc9f42de45447ccb919e4a0911e4.png)
2.4.5逻辑运算符
逻辑运算符包括&&(逻辑与)、(逻辑或)、!(逻辑非)。逻辑运算符计算的值必须是 boolean 型数据。在逻辑运算符中,除了“!”是单目运算符之外,其他都是双目运算符。
运算符 | 含义 | 举例 | 结果 |
&& | 逻辑与(并且) | A&&B | (对)与(错)=错 |
|| | 逻辑或(或者) | A||B | (对)或(错)=对 |
! | 逻辑非(相反) | !A | 不(对)=错 |
public static void main(String[] args) {//主函数
// TODO 自动生成的方法存根
int a = 2; //声明int型变量a
int b =5; //声明int型变量b
//声明boolean型变量,用于保存应用逻辑运算符“&&”后的返回值
boolean result =((a >b) && (a != b));
// 声明boolean 型变量,用于保存应用逻辑运算符“||”后的返回值
boolean result2 = ((a > b) || (a !=b));
System.out.println(result); // 将量result 输出
System.out.println(result2); //将变量result2输出
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/a95dd6a5d1a1e824b4b2e91044268557.png)
2.4.6位运算符
位运算的操作数类型是整形,可以有符号的,也可以是无符号的,位运算符可以分为两大类,位逻辑运算符和位移运算符。
运算符 | 含义 | 举例 |
& | 与 | a&b |
| | 或 | a|b |
~ | 取反 | a~b |
^ | 异或 | a^b |
<< | 左移位 | a<<b |
>> | 右移位 | a>>b |
>>> | 无符号右移位 | a>>>b |
按位与运算 | 都是1才是1 |
按位或运算 | 有1就是1 |
按位取反运算 | 1为0,0位1 |
按位异或运算 | 两者相同为0,不同为1 |
<<(左移) | 整体左移,后位补0,溢出去掉 |
>>(右移) | 整体右移,整数补0,负数补1,溢出去掉 |
>>>(无符号位移) | 整体右移,空位补0,溢出去掉 |
2.4.7复合赋值运算符
和其他主流编程语言一样,Java 中也有复合赋值运算符。所谓的复合赋值运算符,就是将赋值运算符与其他运算符合并成一个运算符来使用,从而同同时实现两种运算符的效果。
2.4.8三元运算符
三元运算符的使用格式为:条件式?值1:值2
三元运算符的运算规则为:若条件式的值为true,则整个表达式取值1,否则取值 2
三元运算符等价于if.....else语句
数据类型转换
类型转换是将一个值从一种类型更改为另一种类型的过程。例如,不仅可以将 String类型数据“457”转换为一个数值型,而且可以将任意类型的数据转换为为 String 类型。
隐式转换:不会丢失数据;
显示转换:可能会丢失数据
数据类型转换有两种方式,即隐式转换与显式转换。
从低级类型向高级类型的转换,系统将自动打执行,程序员无须进行任何操作。这种类型的转换称为隐式转换,也可以称为自动转换。下列基本类数据类型会涉及数据转换,不包括逻辑类型。这些类型按精度从“低”到“高”排列的顺序为 byte<short<int<long<float<double。
public static void main(String[] args) {
// TODO Auto-generated method stub
byte mybyte = 27;
int myint = 150;
float myfloat = 452.12f;
char mychar = 10;
double mydouble = 45.46546;
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));
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/4eaf47478103c930fe0c1a4f1e34db0c.png)