第一个代码
public class Hello {
public static void main(String[] args) {
System.out.println("Hello,World!");
}
}
今天我们学习内容主要是:注释,标识符,和数据类型
Java基础语法:
注释:
标注解释,不会被执行,是写给人看的,使人更容易理解代码,我们要养成注释的好习惯哟。
三种注释:
单行注释
多行注释
文档注释
public class HelloWorld {
public static void main(String[] args) {
//单行注释用“//"
//输出一个HelloWorld
System.out.println("Hello World");
}
}
/* 多行注释 */
//JavaDoc文档注释,可以加参数
/**@Description HelloWprld
* @Athor 小闫同学
*
*/
//在网上找了一个有趣的代码注释,嘿嘿,侵删。
/***
* ░░░░░░░░░░░░░░░░░░░░░░░░▄░░
* ░░░░░░░░░▐█░░░░░░░░░░░▄▀▒▌░
* ░░░░░░░░▐▀▒█░░░░░░░░▄▀▒▒▒▐
* ░░░░░░░▐▄▀▒▒▀▀▀▀▄▄▄▀▒▒▒▒▒▐
* ░░░░░▄▄▀▒░▒▒▒▒▒▒▒▒▒█▒▒▄█▒▐
* ░░░▄▀▒▒▒░░░▒▒▒░░░▒▒▒▀██▀▒▌
* ░░▐▒▒▒▄▄▒▒▒▒░░░▒▒▒▒▒▒▒▀▄▒▒
* ░░▌░░▌█▀▒▒▒▒▒▄▀█▄▒▒▒▒▒▒▒█▒▐
* ░▐░░░▒▒▒▒▒▒▒▒▌██▀▒▒░░░▒▒▒▀▄
* ░▌░▒▄██▄▒▒▒▒▒▒▒▒▒░░░░░░▒▒▒▒
* ▀▒▀▐▄█▄█▌▄░▀▒▒░░░░░░░░░░▒▒▒
* 我是单身狗,我就这样默默地看着你们秀恩爱,我一句话也不说。
*/
标识符
Java所有的组成部分都需要名字,无论是类名,变量名还是方法名,都被称作标识符。
关键字:名字
public
class
static
void
标识符注意事项:
必须以字母“A-z”,美元符“$”,或者下划线“_”开头,后面可以是字母、美元符、下划线、数字或任何字符组合,不能使用关键字作为变量名和方法名。
标识符是大小写敏感的,区分大小写!
可以使用中文命名,但不建议。
数据类型:
Java是一种强类型语言,规范非常严格,要求变量的使用严格规范,所有的变量都必须先定义后使用。
好处:安全性高
缺点:速度慢
弱类型语言:可以不符合规定VB、JS
基本类型(primitive type)
public class Demo02 {
public static void main(String[] args) {
//八大基本数据类型
//整数
int num1 = 10;//最常用
byte num2 = 20;
short num3 = 30;
long num4 = 40L; //Long类型数字后面要加L
//浮点数
float num5 = 50.1F;//float类型要在数字后面面加F
double num6 = 3.141592653549798;
//字符
char name = 'a';//一个字
char name1 = '闫';
//字符串,String不是关键字,类
String name2 = "小闫同学";
//布尔值
boolean flag1 = true;
boolean flag2 = false;
}
}
常见问题:
public class Demo03 { //常见问题
public static void main(String[] args) {
//整数拓展:进制问题
//java中用小前缀
// 二进制以0b开头 十进制 八进制 0 十六进制 0x
int i = 10;
int i2 = 010;//八进制0
int i3 = 0x10; //十六进制 0x 0~9 A~F
System.out.println(i);
System.out.println(i2);
System.out.println(i3);
System.out.println("==================");
//浮点数拓展 eg:银行业务怎么表示,钱?——以后会学习:BigDecimal 数学工具类
//float 表现的字长有限,但是数除出来是无限的,离散,舍入误差,由于很多数字无法准确表示,只能用约数表述,只能接近但不能于
//double
//最好完全《避免》使用浮点数进行比较!!!
//观察下面面两组代码运行结果:
float f = 0.1f; //0.1
double d = 1.0/10; //0.1
System.out.println(f==d); //判断f和d是否相等 false
System.out.println(f);
System.out.println(d);
System.out.println("==================");
float f2 = 2334234234324f;
float d2 = f2 + 1;
System.out.println(f2 == d2); //ture
System.out.println(f2);
System.out.println(d2);
System.out.println("==================");
//字符拓展
char c1 = 'a';
char c2 = '言';
System.out.println(c1);
System.out.println((int)c1);//强制类型转换
System.out.println(c2);
System.out.println((int)c2);
System.out.println("==================");
//强制转换可以把字符变成数字->所有的字符本质都是数字
//单引号表示字符常量 char类型编码 Unicode编码可以处理各种语言的问题,占用2个字节
// Unicode支持的基本字符上限是65536个
//Excel表格最早也只有65536这么长
//U0000 UFFFF 正常的Unicode编码
char c3 = '\u0061';
System.out.println(c3);//a
// Java会查Unicode表里面的字符
//我们平时人性化表达可以不这样写,按照上面的方式写就好啦
System.out.println("==================");
//==================================================
//鬼马少女突然想到可以用代码小小表白一下
//首先我们查一下想要表达的汉字在Unicode表中的编码
//查找的过程就不和大家分享了,举一反三,小学生都会啦~
//接下来我们对这些数字进行类型转换,就可以得到想要的汉字啦~
int x1 = 35328;
System.out.println((char)x1);
int x2 = 35821;
System.out.println((char)x2);
int x3 = 38515;
System.out.println((char)x3);
int x4 = 25105;
System.out.println((char)x4);
int x5 = 29233;
System.out.println((char)x5);
int x6 = 20320;
System.out.println((char)x6);
//这段代码的结果就是小闫同学的新声,哈哈哈
//转义字符
//\t 制表符
//\n 换行
//......小闫后面会专门写一篇关于转义字符的Blog
System.out.println("I\tlove\tyyc\neveryday\tand\tnight");
String original;
String sa = new String("hello,world");
String sb = new String("hello,world");
System.out.println(sa == sb);
String sc = "hello world";
String sd = "hello world";
System.out.println(sc == sd);
//对象 从内存分析 眼睛看到一样的东西,但是在内存上是不一样的
//布尔值扩展
boolean flag = true;
if(flag == true) {}
if(flag){} //默认括号里面在判断值是否为真
//less is more!代码要精简易读
}
}
引用类型(reference type)
除了基本类型,都是引用类型。
类型转换:
因为Java是强类型语言,所以运算的时候要进行类型转换。
整型和字符串、常量之间可以进行运算,运算时,不同类型要先进行转换。
低-------->高
byte-short-char-int-long-float-double
转换方法:
强制转换(高-低):(类型)变量名
自动转换(低-高)
代码实例:
public class Demo04 {
public static void main(String[] args) {
int i = 128;
byte b = (byte)i; //内存溢出,转换的时候尽量避免
//强制转换 (类型)变量名 高-低
System.out.println(i);
System.out.println(b);
//自动转换 低-高
double c = i;
System.out.println(c);
System.out.println((int)4.13); //4
System.out.println((int)-3.09f); //-3
/*注意事项:
1.不能对布尔值进行转换
2.不能吧对象转换成不相干的类型
3.在把高容量转换成低容量的时候,强制转换!
4.转换的时候可能会遇到内存溢出,或者 精度 问题!
*/
System.out.println("===============");
char e = 'a';
int d = e+1;
System.out.println(d);
System.out.println((char)d); //b
}
}
内存溢出如何处理:
public class Demo05 {
public static void main(String[] args) {
//操作比较大的数的时候,注意溢出问题
//JDK7新特性,数字之间可以用下划线分割,下划线不会被识别
int money = 10_0000_0000;
int year = 20;
int total1 = money*year; //计算的时候内存溢出了
long total2 = money*year; //默认是int类型,转换之间已经存在问题了,所以用这个方法不可行
System.out.println(total1);
System.out.println(total2);
//正确做法:
long total3 = money*((long)year); //运算前就把数据转换
System.out.println(total3);
long total4 = ((long)money)*year;
System.out.println(total4);
//L l 用大写字母表示不容易看错
}
}
变量:
变量就是可以变化的量。
变量代表一块内存空间,空间的位置是确定的,但里面具体村什么东西不确定,所以叫变量。
内存本身就存在,我们人为规定了内存指定的空间应该放什么,这就是数据类型,我们为了区分每个数据类型中具体的个体就要给他们取名字,这就是变量名。
【又来强调了,Java是强类型语言,每个变量都必须声明类型!】
Java变量是程序中最基本的存储单元,其要素包括【变量名】,【变量类型】和【作用域】。
type varName [=value] [{,varName[=value]}];
//数据类型 变量名 = 值;可以用逗号隔开来声明多个同类型变量。
不仅建议在一行定义多个同类型变量,视觉上就会很繁琐。
public class Demo06 {
//定义变量
public static void main(String[] args) {
//int a = 1, b = 2, c = 3; 不建议这么写
//写程序的时候要注重程序的可读性
String name = "yan";
char x = 'x';
double pi = 3.14;
}
}
注意:
1.每个变量都有【类型】,类型可以是基本类型,也可以是引用类型。
前面用过的String是引用类型。
2.变量名必须是合法标识符。
3.变量声明是一条完整的语句,因此每一个声明都必须以分号结束。
变量作用域:
public class Demo07 {
//变量作用域
static int allClicks=0; //类变量
String str="hello world"; //实例变量
public void method(){
int i = 0; //局部变量
}
}
类变量
写在类里面的,需要加关键词stastic,静态的
实例变量
写在类中间
局部变量
写在方法里面的
public class Demo08 { //类
//属性:变量
//类变量 加static关键词,它就从属类了
//类变量随类一起出现一起消失
static double salary = 2500;
//实例变量:从属于对象;如果不自行初始化,会变成这个类型的默认值
//作用域更大了,在类里面,方法外面。
//定义一个变量就可以用,不用初始化
String name; //默认值 字符串变量初始化是16位的0:u0000
int age; //数值类型初始值一般是0(int)或0.0
boolean flag; //默认值是false
char yyc; //默认值是空格
//main方法
public static void main(String[] args) {
//局部变量;使用前必须声明和初始化值
int i = 10;
System.out.println(i);
//使用实例变量:
//变量类型 变量名字 = new Demo08();
//生成对象的快捷键 Alt+Enter
Demo08 demo08 = new Demo08();
System.out.println(demo08.age); //0
System.out.println(demo08.name); //null
System.out.println(demo08.flag); //false
System.out.println(demo08.yyc); //空格
//类变量
System.out.println(salary);
}
//其他方法
public void add(){
//System.out.println(i); //无法输出,因为i是局部变量
}
}
变量命名规范
1.变量、方法、类名:见名知意
2.类成员变量:
首字母小写+驼峰原则:
eg:
monthSalary
即出来第一个单词以外,后面的单词首字母大写
3.局部变量:首字母小写和驼峰原则
4.常量:大写字母和下划线:MAX_VALUE
5.类名:首字母大写和驼峰原则:Man,GoodGirl
6.方法名:首字母小写和驼峰原则:run(),runFast()
常量:
初始化后就不能再改变。
可以理解为一种特殊的变量,即设定好就不能再改变。
final 常量名 = 值;
final double PI = 3.14;
常量名一般使用大写字母。