一、Hello,world
首先创建java文件,文件名字为 Hello.java,代码如下。然后使用javac编译 Hello.java 。当编译完成之后,生成一个Hello.class 。这个时候 java Hello.java
public class Hello{
public static void main (String[] args){
System.out.print("Hello,World!");
}
}
二、java运行机制
解释型 | 编译型 |
---|---|
一边执行编译 | c c++ 这种需要将整个代码运行前后编译一遍的语言 |
java属于先编译,后解释
三、java基础语法
新建空 项目
新建空模块
新建 文件--项目结构--SDK选择和jdk版本相同的,语言级别选择8
新建类
运行
1)注释
修改注释配色方案
// 单行注释
/**javadoc:文档注释 */
/* 多行注释*/
标识符
1、所有的标识符都应该以字母(A-Z 或者 a-z),美元符 $ ,或者下划线 (_)开始
2、不可以使用关键字作为变量名
3、标识符是大小写敏感的
数据类型
弱类型语言 | 强类型语言 |
---|---|
弱类型语言是一种弱类型定义的语言,某一个变量被定义类型,该变量可以根据环境变化自动进行转换,不需要经过显性强制转换 vb 、PHP、javascript | 一旦某一个变量被定义类型,如果不经过强制转换,则它永远就是该数据类型了 Java、.net 、Python、C++ |
除了基础的8个类型,剩下的都是引用类型 例如string
整数 | 浮点数 | 字符/字符串 | 布尔 |
---|---|---|---|
int 4字节 | float 4字节 | char 2字节 | boolean 1位 |
byte 1字节 | double 8字节 | ||
shrot 2字节 | |||
long 8字节 |
类型扩展
int
整数拓展 进制 二进制0b开头 十进制 八进制0开头 十六进制0x开头
public class Demo04 {
public static void main(String[] args) {
//整数拓展 进制 二进制0b开头 十进制 八进制0开头 十六进制0x开头
//八进制逢八进一
//
int i = 10;
int ia = 010; //八进一
int ib = 0x10; //十六进一
System.out.println(i);
System.out.println(ia);
System.out.println(ib);
}
}
flort对比
//浮点数
//最好完全使用浮点数进行比较
//最好完全使用浮点数进行比较
float a = 0.1f;
double b = 0.1;
System.out.println(a==b); //对比输出fales
//===============================================
//===============================================
float c = 123123123;
float d = 1 + c;
System.out.println(c==d); //对比输出ture
}
}
char转换数字
//===============================================
//char转换数字
//===============================================
char c1 = 'a';
char c2 = 'b';
System.out.println(c1);
System.out.println((int)c1);
System.out.println((int)c2);
char c3 = '\u0061';
System.out.println(c3);
}
}
类型转换
低位转高位自动转换
高位转地位强制转换
浮点数和复数转化的精度问题
溢出问题
public class Demo06 {
public static void main(String[] args) {
int money = 10_0000_0000;
int year = 20;
int total = money*year;
System.out.println(total); //计算的时候溢出了
long total1 = money*year;
System.out.println(total1); //我们发现 使用long类型计算的时候,也是整数溢出
System.out.println("=============================================");
long total3 = money*((long)year); //再计算前对year进行转化则不会溢出
System.out.println(total3);
}
}
变量
1、变量必须声明类型 类型可以是基本类型,也可以是引用类型
2、变量名必须是合法的标识符
3、变量声明是一条完整的语句,因此每一个生命都必须以分号结束
1)、类变量 :从属于类,随着类一起生成和消失
2)、实例变量 :从属于对象,数值型变量的默认值是0(或者0.0),布尔型变量的默认值是false,引用类型变量的默认值是null
3)、局部变量 :两个{}之间的,使用之前必须声明和初始化值
常量
初始化之后不能改变的值,一个特殊的变量值被设置之后不允许改变,修饰符不区分先后顺序 public
final 常量名=值;
final double PI=3.14
运算符 +
正常使用a/b的时候因为两个都是int型,所以得出的结果0.5也为int型结果被舍去为0,所以这里我们应该使用double进行强转才可以输出0.5
package operator;
public class Demo01 {
public static void main(String[] args) {
//二元运算符
int a = 10;
int b = 20;
int c = 30;
int d = 40;
System.out.println(a+b);
System.out.println(a-b);
System.out.println(a*b);
System.out.println(a/(double)b);
}
}
相加的时候自动由低位向高位转换
有long向long转化
有double向double转化
int不能转换成double
public class Demo2{
public static void main{
long a = 123123123123L;
int b = 123;
short c = 10;
byte d = 8;
System.out.println(a+b+c+d); //long
System.out.println(b+c+d); //int
System.out.println((double)c+d); //double
System.out.println(c+d); //int
System.out.println((double)c +d); //double
}
}
运算符boolen
public class Demo03 {
public static void main(String[] args) {
//boolen
int a = 1;
int b = 2 ;
System.out.println(a>b);
System.out.println(a<b);
System.out.println(a==b);
System.out.println(a!=b);
}
}
false
true
false
true
自增
a++先赋值再自增 a = a+1
++a先自增再赋值
package operator;
public class Demo04 {
public static void main(String[] args) {
// ++ -- 自增 自减
int a =3;
int b = a++; //执行完这行代码后,先给b赋值,再自增
int c = ++a; //执行完这行代码前,先自增,再给b赋值
System.out.println(a);
// a = a+1
System.out.println(b);
System.out.println(c);
double pow = Math.pow(3, 2); //很多运算我们会使工具类来做
System.out.println(pow);
}
}
5
3
5
9.0
逻辑运算符 与(and) 或 (or) 非 (取反)
public class Demo05 {
public static void main(String[] args) {
//逻辑运算 与(and) 或 (or) 非 (取反)
boolean a = true;
boolean b = false;
System.out.println("a && b:"+(a&&b)); //两个有一个为假则为假
System.out.println("a || b :"+(a||b)); //两个又一个为真则废真
System.out.println("! (a && b) "+ !(a&&b)); // 如果是真变为假 如果是假变为真
//短路运算 &&的时候如果遇到fales则不执行&&后面的。
int c = 5; //此时c = 5
boolean e = ((c<4)&&(c++<4)); //首先判断第一个条件c>4为fales,这时候将不会执行后面的先赋值再自增
System.out.println(e); //如果程序执行到了c++<4 ,c将会变为6,而且将输出fales
System.out.println(c);
}
}
a && b:false
a || b :true
! (a && b) true
false
5
位运算
//二进制逢二进一 ,是一种加快运算方法的运算,只需要记住左移右移
public class Demo06 {
public static void main(String[] args) {
/*
A = 0011 1100
B = 0000 1101
---------------------------------------
A&B 0000 1100 如果上下都为1的话才是1
A|B 0011 1101 如果都是0则为0 如果有一个1则为1
A|^B0011 0001 相同为0 不同为1
~B 1111 0010 与B完全相反
<< >> 左移右移动
<< *2
>> /2
效率及高
*/
System.out.println(2<<3); //2*2*2*2
}
}
16
条件运算符 字符串连接
public class Demo07 {
public static void main(String[] args) {
//条件运算符
int a = 10;
int b = 20;
a+=b; // a = a+b
a-=b; // a = a-b
System.out.println(a);
System.out.println(b);
//字符串连接符 如果+左边有string类型,则将其他操作都转化程string类型
System.out.println(""+a+b); //首先当成了字符串判断所以int转化成了string进行相加
System.out.println(a+b+""); //因为string在右侧先进行a+b运算所以输出的结果为int相加
}
}
10
20
1020
30
三元运算符
public class Demo08 {
public static void main(String[] args) {
//x?y:z 如果x==true,则结果为y,否则结果为z
int score = 80 ;
String type = score<50? "及格":"不及格";
System.out.println(type);
}
}
不及格
标签:01,java,int,double,基础,System,println,public,out
From: https://www.cnblogs.com/uchihaup/p/16920507.html