学开发主要搞懂三个问题,是什么,为什么学,能做什么
什么是计算机程序:计算机按照某种顺序而完成的一系列有序指令的集合。
什么是开发语言:人类与计算机沟通的语言
什么是java:一门优秀的开发语言,
为什么学java:这就问你自己了,可能吃饱了撑的。不想早死就别学。
/** 计算机如何解决问题
* 例如:给我一杯水 转身到厨房 找到一个杯子 找到水壶 在杯子中倒入一些水 拿着杯子走回桌子
* 程序是用特殊的编程语言写出来表达如何解决我问题的
* 程序=算法+数据结构
* 算法:1.我们要让计算机做计算,就需要像这样找出计算步骤,如何用编程语言写出来
* 2.计算机做的所有事情都叫算法
* 3.计算机的步骤就是算法
* 计算机的思维
* 2x+6=20
* 解方程
* 枚举
* 二分搜索
* 枚举求最大公约数
* 程序的执行步骤:解释 翻译 执行
*/
java的作用:什么桌面程序,web程序,安卓程序等等都可以做
Java技术平台:
1.java SE是java的核心,能完成桌面应用程序的开发,是其它两者的基础;
2.java EE主要用于网络程序和企业应用开发。
3.java ME这个基本上没人用可以忽略
java语言的特点:
简单,跨平台,面向对象,可移植性,分布式,解释通用性,稳健,安全,多线程和同步机制。
开发java程序,先下个jdk,再下一个ide(理解成开发工具就行),或者可以直接下个MyEclipse,安装都是傻瓜式操作。
jdk和jre的解释:
1,JDK:Java Development Kit,java的开发和运行环境,java的开发工具和jre。
2,JRE:Java Runtime Environment,java程序的运行环境,java运行的所需的类库+JVM(java虚拟机)。
3,配置环境变量:让java jdk\bin目录下的工具,可以在任意目录下运行,原因是,将该工具所在目录告诉了系统,当使用该工具时,由系统帮我们去找指定的目录。
环境变量的配置:
1.安装完成后,右击"我的电脑",点击"属性",选择"高级系统设置"
2.选择"高级"选项卡,点击"环境变量";
1):永久配置方式:JAVA_HOME=%安装路径%\Java\jdk path=%JAVA_HOME%\bin
2):临时配置方式:set path=%path%;C:\Program Files\Java\jdk\bin
特点:系统默认先去当前路径下找要执行的程序,如果没有,再去path中设置的路径下找。
classpath的配置:
1):永久配置方式:classpath=.;c:\;e:\
2):临时配置方式:set classpath=.;c:\;e:\
java的运行机制:
举个栗子:
package com.alphabet.entry;
public class HelloWorld {
public static void main(String[] args) {
System.out.println("helloworld");
}
}
编译之后, 我们得到了HelloWorld.class,
在HelloWorld里面, 我们调用了 JAVA API中的 java.lang.System这个类的静态成员对象 out, out 的静态方法: public static void println(String string);
然后我们让虚拟机器来执行这个HelloWorld。
1. jvm会在classpath中找到HelloWorld.class。
2. jvm中的解释器(interpret)会把HelloWorld.class解释成字节码。
3. 把解释后的字节码交由execution engin执行。
4. execution engin会调用native method(即平台相关的字节码)来在host system的stdout(显示器)的指定部分打印出指定的字符串。
5. 这样, 我们就看到"helloworld"字样了。
javac命令和java命令做什么事情呢?
要知道java是分两部分的:一个是编译,一个是运行。
javac:负责的是编译的部分,当执行javac时,会启动java的编译器程序。对指定扩展名的.java文件进行编译。 生成了jvm可以识别的字节码文件。也就是class文件,也就是java的运行程序。
java:负责运行的部分.会启动jvm.加载运行时所需的类库,并对class文件进行执行.
一个文件要被执行,必须要有一个执行的起始点,这个起始点就是main函数.
java的基础语法:
1.Unicode字符集:java语言使用的Unicode标准字符集。在Unicode字符集中,前128个字符刚好是ASCII码,但大部分国家的“字母表”中的字母都是Unicode字符集中的字母,因此java所使用的字母不仅包括通常的拉丁字母,还包括汉子、希腊字母等等。
java关键字
标识符:
1),数字不可以开头。
2),不可以使用关键字。
变量的作用域和生存期:
变量的作用域:
作用域从变量定义的位置开始,到该变量所在的那对大括号结束;
生命周期:
变量从定义的位置开始就在内存中活了;
变量到达它所在的作用域的时候就在内存中消失了;
数据类型:java数据类型是一切编程的基础。
java绝大部分的操作是基于内存的,如果没有内存一切都无法说起,而数据类型就是跟内存息息相关的事物,他会让我们合理的使用内存。只有基础越牢固,才能越往上。
变量就是申请内存来存储值。也就是说,当创建变量的时候,需要在内存中申请空间。
内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据。
常用数据类型:byte、short、int、long、float、double、char、boolean
简单类型
|
boolean
|
byte
|
char
|
short
|
int
|
long
|
float
|
double
|
void
|
二进制位数
|
1
|
8
|
16
|
16
|
32
|
64
|
32
|
64
|
--
|
封装器类
|
Boolean
|
Byte
|
Character
|
Short
|
Integer
|
Long
|
Float
|
Double
|
Void
|
package com.alphabet.entry;
import java.lang.annotation.Native;
public class DataType {
/**
* byte 数据类型是8位、有符号的,以二进制补码表示的整数;
* 源码: public static final byte MIN_VALUE = -128;
* 最小值是 -128(-2^7);
* 源码:public static final byte MAX_VALUE = 127;
* 最大值是 127(2^7-1);
* 默认值是 0;
* byte 类型用在大型数组中节约空间,主要代替整数,因为 byte 变量占用的空间只有 int 类型的四分之一;
* by1是基本数据类型,by2是封装类
*/
public static void byteType() {
// TODO Auto-generated method stub
byte by1=6;
System.out.println(by1);
Byte by2=8;
String test=by2.toString();
System.out.println(test);
System.out.println(test.getClass());
}
/**
* short 数据类型是 16 位、有符号的以二进制补码表示的整数
* 最小值是 -32768(-2^15);
* 最大值是 32767(2^15 - 1);
* Short 数据类型也可以像 byte 那样节省空间。一个short变量是int型变量所占空间的二分之一;
* 默认值是 0;
*
*/
public static void shortType() {
// TODO Auto-generated method stub
short sh=8;
System.out.println(sh);
Short sh2=8;
System.out.println(sh2);
}
/**
* int 数据类型是32位、有符号的以二进制补码表示的整数;
* 最小值是 -2,147,483,648(-2^31);
* 最大值是 2,147,483,647(2^31 - 1);
* 一般地整型变量默认为 int 类型
* 默认是0
* 也是最常用的类型
* @Native public static final int MIN_VALUE = 0x80000000;
* @Native public static final int MAX_VALUE = 0x7fffffff;
*
*/
public static void intType() {
// TODO Auto-generated method stub
int int1=6;
Integer int2=8;
int int3=int2.intValue();
System.out.println(int1);
System.out.println(int2);
System.out.println(int3);
System.out.println(int2.MAX_VALUE);
System.out.println(int2.MIN_VALUE);
}
/**
* long:长整型
* long 数据类型是 64 位、有符号的以二进制补码表示的整数;
* 最小值是 -9,223,372,036,854,775,808(-2^63);
* 最大值是 9,223,372,036,854,775,807(2^63 -1);
* 这种类型主要使用在需要比较大整数的系统上;
*
*/
public static void longType() {
// TODO Auto-generated method stub
long long1=6;
Long long2=8L;
long long3=long2.SIZE;
System.out.println(long1);
System.out.println(long2);
System.out.println(long3);
System.out.println(long2.MAX_VALUE);
System.out.println(long2.MIN_VALUE);
System.out.println(long2.max(100, 999999999));
}
/**
* float 数据类型是单精度、32位、符合IEEE 754标准的浮点数;
* float 在储存大型浮点数组的时候可节省内存空间;
* 默认值是 0.0f;
* 浮点数不能用来表示精确的值,如货币;
*
*/
public static void floatType() {
// TODO Auto-generated method stub
float f1=6;
Float f2=8f;
float f3=f2.SIZE;
System.out.println(f1);
System.out.println(f2);
System.out.println(f3);
System.out.println(f2.MAX_VALUE);
System.out.println(f2.MIN_VALUE);
}
/**
* char类型是一个单一的 16 位 Unicode 字符;
* 最小值是 \u0000(即为0);
* 最大值是 \uffff(即为65,535);
* char 数据类型可以储存任何字符;
* char可以输入任何东西,但是只唯一
*/
public static void charType() {
char c1=‘f‘;
System.out.println(c1);
Character c2=‘f‘;
System.out.println(c2);
/**
* 为什么char和character不能来草字符串呢
* 首先String不属于8种基本数据类型,String是一个引用类型的对象.他是专门用来处理字符串的
* 因为char采用的是Unicode编码,所以基本上可以容纳所有的字符.
* 而String是用来操作字符串的,String其实也就是一个char类型的数组
*/
char[] c= {‘1‘,‘2‘,‘a‘,‘b‘,‘c‘,‘d‘,‘e‘};
String d="12abcde";
if (c.equals(d)) {
System.out.println("一样的");
}
}
/**
* double 数据类型是双精度、64 位、符合IEEE 754标准的浮点数;
* 浮点数的默认类型为double类型;
* double类型同样不能表示精确的值
* //浮点计算是有误差的 例如
* System.out.println(1.2-1.1);
* double和float表示精确的数有问题
*/
public void doubleType() {
// TODO Auto-generated method stub
double d1=6;
Double d2=8d;
double d3=d2.SIZE;
System.out.println(d1);
System.out.println(d2);
System.out.println(d3);
System.out.println(d2.MAX_VALUE);
System.out.println(d2.MIN_VALUE);
}
/**
* boolean数据类型表示一位的信息;
* 只有两个取值:true 和 false;
* 这种类型只作为一种标志来记录 true/false 情况;
* 默认值是 false;
*
*/
public static void booleanType() {
// TODO Auto-generated method stub
boolean b1=true;
Boolean b2=false;
boolean b3=b2.booleanValue();
System.out.println(b1);
System.out.println(b2);
System.out.println(b3);
System.out.println(b2.hashCode());
System.out.println(b2.getClass());
}
public static void main(String[] args) {
System.out.println("Hello");
}
}
-
运算符号:
4)、逻辑运算符。
& | ^ ! && ||
逻辑运算符除了 ! 外都是用于连接两个boolean类型表达式。
&: 只有两边都为true结果是true。否则就是false。
|:只要两边都为false结果是false,否则就是true
^:异或:和或有点不一样。
两边结果一样,就为false。
两边结果不一样,就为true.
& 和 &&区别: & :无论左边结果是什么,右边都参与运算。
&&:短路与,如果左边为false,那么右边不参数与运算。
| 和|| 区别:|:两边都运算。
||:短路或,如果左边为true,那么右边不参与运算。
5)、位运算符:用于操作二进制位的运算符。
& | ^
<< >> >>>(无符号右移)
练习:对两个变量的数据进行互换。不需要第三方变量。
int a = 3,b = 5;-->b = 3,a = 5;
方法一:
a = a + b; a = 8;
b = a - b; b = 3;
a = a - b; a = 5;
方法二:
a = a ^ b;//
b = a ^ b;//b = a ^ b ^ b = a
a = a ^ b;//a = a ^ b ^ a = b;
练习:高效的算出 2*8 = 2<<3;
数据类型转换
自动类型转换
数据类型要兼容
目标类型大于原类型
强制类型转换
目标类型小于源类型
运算符的优先级:
最高的优先级:()
最低的优先级:赋值运算符(=)
优先级顺序:算数运算符>关系运算符>逻辑运算符
Scanner sc=new Scanner(System.in);//在Consolo控制输出
// Scanner out=new Scanner((Readable) System.out);
条件语句:if(条件){语句序列} 如果什么什么就什么什么
switch (key) {
case value:
break;
default:
break;
}
JAVA 从入门到Just met java
原文:https://www.cnblogs.com/lw687a/p/9508747.html